是否应删除空白XML元素?

时间:2010-10-09 15:07:03

标签: xml

在XML世界中,最好在文件中留下空白元素:

<widgets>
    <widget>
        <id>5</id>
        <name>Bob</name>
        <price>5.33</price>
        <otherInfo>Bob is a ball.</otherInfo>
        <dateAdded>9-5-2010</dateAdded>
    </widget>
    <widget>
        <id>3</id>
        <name>Mary</name>
        <price>4.67</price>
        <otherInfo></otherInfo>
        <dateAdded>10-1-2010</dateAdded>
    </widget>
</widgets>

或删除它们:

<widgets>
    <widget>
        <id>5</id>
        <name>Bob</name>
        <price>5.33</price>
        <otherInfo>Bob is a ball.</otherInfo>
        <dateAdded>9-5-2010</dateAdded>
    </widget>
    <widget>
        <id>3</id>
        <name>Mary</name>
        <price>4.67</price>
        <dateAdded>10-1-2010</dateAdded>
    </widget>
</widgets>

对于解析,如果它们在那里会更容易,因为在尝试获取它之前不需要检查元素是否存在。另一方面,XML文件不会出现空白元素。

最佳做法是否规定了一种存储形式与另一种存储形式,或者它取决于存储的数据?

3 个答案:

答案 0 :(得分:3)

这取决于存储的数据。

对于某些元素,只需元素的状态就会产生巨大的差异 - HTML中的一个简单示例是<hr /><br />。对于其他数据格式,它没有任何区别。

您通常应该知道您正在处理的数据类型 - 理解数据格式的一部分是了解空元素是否重要。

答案 1 :(得分:2)

这取决于应用程序。 空白标签具有含义,如果它不存在则不一样。 根据应用程序的设计,需要保留或不保存。

我已经看到很多应用程序,其中空白和/或自闭标签(<otherInfo/>)在应用程序中具有含义,如果它们不存在,则应用程序将停止工作。

给你举个例子: 在magento中,一些缓存后端需要缓存前缀。如果它的空白是一个空白的前缀,但如果它不存在则它将无效。这将是你的“空白”标签的一个例子。

我使用的另一个应用程序是用于机顶盒视频点播提供程序的目录API。

有一个节点<itempurchased/>表示该商品已被购买且可以投放。我个人不喜欢这个设计因为它的暧昧。我会设计它像<itempurchased>true</itempurchased><itempurchased bought="true/>或其他东西,但你就是这个共同合作的世界:)。

所以他们 DO 包含一个值。它是长度为零的字符串

如果您不想更改数据,则必须保留空标记和自闭标记。

答案 2 :(得分:-2)

我认为没有这方面的标准。

如果您正在进行解析以及创建XML文件,我会选择更方便的内容。更改代码或维护或多或少易于理解的文件。

如果其他人将创建XML文件,那么我会说列表中几个字段需要空格,而且许多字段允许删除一些字段。

但请记住,如果该领域不存在,除非他们阅读文件,否则没有人会存在