0
我想比较两个XML文件并想知道这两个文件是否相同。但我想忽略内在的文字差异。应该说,如果结构有所不同,即添加了一些新标签,它就会有所不同。如何比较2个xml文件知道它是否相同
我试过XML Diff,但是我没有得到一个选项来忽略XmlDiffOptions中的内部文本。
我什至试过how-would-you-compare-two-xml-documents的答案,但没有为我工作。
我想比较两个XML文件并想知道这两个文件是否相同。但我想忽略内在的文字差异。应该说,如果结构有所不同,即添加了一些新标签,它就会有所不同。如何比较2个xml文件知道它是否相同
我试过XML Diff,但是我没有得到一个选项来忽略XmlDiffOptions中的内部文本。
我什至试过how-would-you-compare-two-xml-documents的答案,但没有为我工作。
通常,“忽略ZZZ时比较两个XML文件”的最简单方法是转换两个文件以消除ZZZ,然后使用标准比较方法(例如XPath deep-equal()函数或规范化后跟字符串比较)。
在你的情况下,如果ZZZ是“文本节点的内容”,使用XSLT转换这两个文件以消除文本节点,然后进行比较。例如(XSLT 2.0):
<xsl:template name="main">
<result><xsl:value-of
select="deep-equal(f:prep($doc1), f:prep($doc2))"/>
</result>
</xsl:template>
<xsl:function name="f:prep" as="document-node">
<xsl:param name="doc" as="document-node()"/>
<xsl:apply-templates/>
</xsl:function>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()"/>
不知道会是多少意义作出忽略内部文本:/也许你可以预处理doument,删除所有你要忽略,然后使用的xmldiff内部文本API? – gideon