我想以级联的方式在XML中存储一些相对简单的内容。其思想是一个构建可以有许多参数集,Python脚本通过读取这些参数集来创建必要的构建构件(*.h等),如果两个集具有相同的参数,则后者将替换前者。在
有(至少)两种不同的XML处理方法:
第一种方法:
<Variants>
<Variant name="foo" Info="foobar">1</Variant
</Variants>
第二种方法:
^{2}$在ElementTree中哪个更容易处理。我有限的理解声称它将是第一个,因为我可以用find()轻松搜索变量并接收整个子树,但是使用第二个样式是否同样容易?我的同事说后一种XML更好,因为它可以更容易地扩展XML(他显然是对的),但我认为扩展性目前不是一个主要因素(很可能我们永远都不需要它)。在
编辑:我当然也可以使用lxml,在这种情况下有关系吗?速度真的不是问题,文件相对较小。在
请记住XML属性的关键限制:
关键字/其他属性表示关键字/值对。如果您可以在Python中将它表示为一个字典,字典的键是XML名称,其值是字符串,那么就可以在XML中将它表示为一组属性,而不管“it”是什么。在
如果不能-例如,如果排序很重要,或者需要一个值来包含子元素-那么就不应该使用属性。在
你们都是对的,但我会尽可能选择1,除了文本内容:
1更简洁易懂,因此不易出错。
1仍然具有很强的可扩展性。您总是可以添加更多的属性或子元素。唯一不可扩展的方法是,如果以后发现您需要
name
,或info
(或文本内容值)的多个值。。。因为在一个元素上不能有多个同名的属性(也不能在多个文本内容节点之间没有任何东西)。但是,您仍然可以通过各种技术来扩展它们,例如在属性中使用空格分隔的值,或者添加子元素作为属性的替代。更新:进一步阅读
一些关于XML元素与属性的辩论的好文章,包括何时使用它们:
另请参阅this SO question(但我认为以上内容提供了更有益的阅读)。在
相关问题 更多 >
编程相关推荐