假设我有两个简单的XML文件:
示例1
<parent name="Bob" gender="male">
<child name="Steve" gender="male"></child>
<child name="Stephanie" gender="female"></child>
</parent>
示例2
<parent name="Bob" gender="male">
<child name="Stephanie" gender="female"></child>
<child name="Steve" gender="male"></child>
</parent>
我正在尝试创建一个函数,该函数将输入两个表示XML的字符串,并且当且仅当它们在语义上等效时才返回true。在这种情况下,即使存在空格差异且子节点的顺序不同,XML文件仍然在语义上相同。
我目前有一个看似有效的解决方案,但我担心它可能有缺点,或者我可能已经推翻了这个问题。我目前的解决方案包括三个步骤。
这个解决方案似乎有效,但我想知道它是否有任何问题,或者我是否应该以另一种方式解决这个问题。
答案 0 :(得分:2)
XML没有内在语义。语义通常是指含义,而作为数据格式,XML本身并不关心含义。
您真正想要的是两个XML文档之间的等价形式。为了能够应用&#34;标准字符串相等性检查&#34;你提一下,考虑把XML放到一个标准的 lexical 形式,例如由以下建议之一定义:
最后,如果文档根据相同的XML模式同时有效,则可以认为两个文档在语法而不是词汇级别上是等效的。
答案 1 :(得分:1)
XML中的重要内容只有您自己才能决定。史蒂夫和斯蒂芬可能是也可能不是同一个名字。最好不要使用&#34;语义和#34;这个词来定义你的等价规则。测试等价的一般方法是定义一个正规形式,将数据转换为正常形式,然后对标准化值进行简单的词法测试 - 这是一种完全合理的方法。但只有你可以决定适当的规范化功能是什么。