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