几个问题:
<a>
  <b/>
</a>
与<a><b/></a>是否一样?
<a><b>abc</b></a>

<a><b>cde</b></a>
呢?
还有dtd和schema 定义数据类型的能力有天壤之别(DTD << Schema)
楼主的“用dtd/schema定义的各节点的数据类型要一样”能否描述的更清晰一点?

解决方案 »

  1.   

    第一个好像不能算是一样的,至于原因希望能顺便告知。
    第二个算是一样的。
    最后一个就是说两个文档都用dtd,或者都用schema来描述,然后再比较。
      

  2.   

    <a>
      <b/>
    </a>
    形成的DOM Tree比<a><b/></a>多了几个text node啊。
    这么说你对text node的值是不敏感的啦。偶的思路:
    遍历DOM Tree的各个结点,将结点的NodeType记录下来(实际就是一串1-12的数字,这个地方应该过滤一下,对不需要的结点,如COMMENT_NODE,不作记录);将此方法分别对需要比较的XML进行一次,得到2个包含一系列数字的数字串,再比较2个数字串是否相同。需要记录的结点类型选择也需要斟酌一下:
    Element node和Text node是肯定需要的,但其他Node就需要就事论事了,因为它们要么与XML的Tree构造无关,要么在某些解析器生成的Tree中根本不存在。但我总觉得这个问题牵扯的东西很多,或许上述方法只能解决比较简单的问题还望高手指点:)