我最近一直在处理一个API,它要求XML文档的节点按特定顺序排列.我想知道为什么他们觉得有必要强制执行这个,因为我完全没有理由认为事情应该像这样.
对于intance,这是正确的(xml大大简化)
<transaction>
<address>1 main st</address>
<amount>100</amount>
<orderId>1234</orderId>
</transaction>
Run Code Online (Sandbox Code Playgroud)
但这会返回错误
<transaction>
<address>1 main st</address>
<orderId>1234</orderId>
<amount>100</amount>
</transaction>
Run Code Online (Sandbox Code Playgroud)
起初我以为它们可以以列表/数组形式存储事物并使索引始终引用同一节点.我理解为什么以相同的顺序发送具有相同名称的兄弟节点很重要,如本问题所述.但是,有些节点可以省略:
<transaction>
<amount>100</amount>
<orderId>1234</orderId>
</transaction>
Run Code Online (Sandbox Code Playgroud)
因此,在第三个示例中,amount和orderId现在将在[0]和[1]而不是第一个(正确)示例中的[1]和[2].
另一个想法是他们将XML作为一个字符串处理并要求他们总是知道哪些节点在彼此之后,但是再次允许省略节点,这个理论没有意义.
任何人都可以向我解释为什么我给节点的顺序很重要?或者我只是处理一个老而脾气暴躁的API?
Rob*_*ney 17
节点顺序显然在XML中很重要,如下所示:
<p>
<span>This wouldn't make much sense</span>
<span>if the order of these nodes were reversed.</span>
</p>
Run Code Online (Sandbox Code Playgroud)
它在XML中不那么明显,就像你提供的那样,它似乎是某种序列化格式.但是,如果未按正确的顺序设置属性,则属性设置器具有副作用的对象可能会失败.
想象一个具有Person公开PersonID和Name属性的私有字段的类.该PersonIDsetter创建的私有实例Person,以及Name设置器的Name对私有财产Person领域.在这种情况下,设置Name之前的设置PersonID失败,因为Person还不存在.
在这种情况下,实现需要在XML PersonID之前出现的模式可以Name防止此错误发生,代价是迫使其他开发人员执行明显无意义的事情.
在这样的情况下,显而易见的事情是找到编写该课程并打败他的开发人员.尽管考虑一个它所处的世界是有趣的,但这很难实现.
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |