我最近一直在处理一个 API,它要求 XML 文档的节点按特定顺序排列。我想知道为什么他们觉得有必要强制执行这一点,而我完全找不到理由让事情变成这样。
例如,这是正确的(xml 大大简化)
<transaction>
<address>1 main st</address>
<amount>100</amount>
<orderId>1234</orderId>
</transaction>
但这会返回一个错误
<transaction>
<address>1 main st</address>
<orderId>1234</orderId>
<amount>100</amount>
</transaction>
起初我认为这样他们就可以以列表/数组的形式存储东西,并且索引总是引用同一个节点。我理解为什么以相同的顺序发送具有相同名称的兄弟节点很重要,如所解释的在这个问题中。但是,可以省略一些节点:
<transaction>
<amount>100</amount>
<orderId>1234</orderId>
</transaction>
因此,在第三个示例中,amount 和 orderId 现在将位于 [0] 和 [1],而不是第一个(正确)示例中的 [1] 和 [2]。
另一种想法是,它们将 XML 作为字符串进行处理,并要求它们始终知道哪些节点紧随其后,但同样,由于允许省略节点,因此该理论没有意义。
谁能向我解释为什么我给出节点的顺序很重要?或者我只是在处理一个陈旧且脾气暴躁的 API?
节点顺序在 XML 中显然很重要,如下所示:
<p>
<span>This wouldn't make much sense</span>
<span>if the order of these nodes were reversed.</span>
</p>
它在 XML 中不太明显,就像您提供的那样,它似乎是某种序列化格式。但是,如果未按正确的顺序设置属性,则属性设置器具有副作用的对象可能会失败。
想象一下有一个私人班级Person
暴露的领域PersonID
and Name
特性。这PersonID
setter 创建私有实例Person
,以及Name
设置器设置Name
私有财产Person
场地。在这种情况下,设置Name
在你设置之前PersonID
失败,因为Person
尚不存在。
这是实现需要的模式的情况PersonID
出现在之前Name
XML 中的内容可以防止此错误发生,但代价是迫使其他开发人员做一些明显无意义的事情。
在这种情况下,显而易见的事情就是找到编写该类的开发人员并击败他。这几乎是不可能的,尽管思考它所在的世界很有趣。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)