应该移除空的XML元素吗?
在处理XML元素的时候,有没有必要移除空白的XML元素?这个问题的出现原因是由于没有一个明确的标准来规定如何处理空白的XML元素。如果你既需要解析XML文件又需要创建XML文件,那么你可以选择更容易的方式来处理。这意味着你可以根据需要修改代码或者保持一个相对易于理解的文件。如果其他人也会创建XML文件,那么建议在只有少数字段需要空白时允许移除一些字段,而对于多个字段则保留空白。但是请记住,如果字段不存在,除非他们阅读文档,否则没有人会知道它的存在。这并不是真的。空白的和自闭合的标签确实有一定的含义,这取决于应用程序设计的需要是否需要保留。解决这个问题的方法是根据具体情况来决定是否移除空白的XML元素。
在XML中,是否应该删除空白的元素?
这个问题的出现是因为不同的应用程序对于空白标签是否存在有不同的含义。根据应用程序的设计,需要保留还是删除空白标签。
在许多应用程序中,空白和/或自封闭标签 (<otherInfo/>
) 在应用程序中具有特定的含义,如果它们不存在,应用程序将停止工作。举个例子,在Magento中,某些缓存后端需要缓存前缀。如果前缀为空白,则表示一个空白前缀,但如果它不存在,则无法正常工作。这就是“blank”标签的一个例子。
我曾经使用的另一个应用程序是为机顶盒视频点播提供商提供的目录API。有一个节点<itempurchased/>
,表示该项已被购买并可以提供服务。我个人不喜欢这个设计,因为它是模糊的。我会将其设计为<itempurchased>true</itempurchased>
或<itempurchased bought="true/>
之类的形式,但这就是合作的世界。
所以,空白标签确实包含一个值,即长度为零的字符串。如果你不想改变数据,就必须保留空白和自封闭标签。
根据你所做的事情,比如将对象序列化为XML并再次反序列化(根据平台而定),它是否存在可能并不重要。这真的取决于你对XML的处理方式。
不,你正在做假设。在“XML的世界”中,它是重要的。如果它对你的应用程序没有影响,那是你的事情。我只是给出了一个特定的例子,说明它是重要的,因此暗示它在一般情况下是重要的。
在XML中,<foo/>
和<foo></foo>
应该没有区别;它们在XML中是完全相同的。然而,有些人坚持使用正则表达式来解析XML,其中就包括它们...
这是真的,这也是为什么我总是提到两个版本的“空白和/或自封闭标签”...“它们确实包含一个值”。但还是谢谢你再次指出这一点。