我是XSLT / Xquery的新手,想要比较两个xml文件(数据内容并可以忽略空格和注释)并打印第二个xml的已更改节点。据我所知(谷歌搜索)我相信它可以使用Xquery完成。我的xml将如下所示。
<ns:Batch xmlns:ns="http://www.sample.com/">
<ns:Product>
<ns:productId>AB02921</ns:productId>
<ns:type>Product</ns:type>
<ns:productDescription>
<ns0:string xmlns:ns0="http://www.sample.com/core" country="US" language="en">EVE BOOTCUT JEAN</ns0:string>
</ns:productDescription>
<ns:productLongDescription>
<ns0:string xmlns:ns0="http://www.sample.com/core" country="US" language="en">For perennial cool with an uber comfortable tw...</ns0:string>
</ns:productLongDescription>
<ns:posDetails>
<ns:isTemplate>false</ns:isTemplate>
</ns:posDetails>
<ns:isTemplate>false</ns:isTemplate>
<ns:lastUpdated>2011-09-07T16:52:50.573</ns:lastUpdated>
<ns:exportDetails>
<ns:isTemplate>false</ns:isTemplate>
</ns:exportDetails>
<ns:mmGroupId groupTypeId="mmGroup" groupHierarchyId="ABC" variantGroupTypeId="region" variantGroupId="All" variantGroupHierarchyId="All">JSBFO</ns:mmGroupId>
<ns:inventoryDetails>
<ns:isTemplate>false</ns:isTemplate>
</ns:inventoryDetails>
<ns:productDimensions>
<ns:isTemplate>false</ns:isTemplate>
</ns:productDimensions>
<ns:warrantyDetails>
<ns:isTemplate>false</ns:isTemplate>
</ns:warrantyDetails>
<ns:standardCostPrice>0.0</ns:standardCostPrice>
<ns:standardMargin>0.0</ns:standardMargin>
<ns:colourId colourRangeId="Default">6007</ns:colourId>
<ns:sizeId sizeRangeId="Default">14</ns:sizeId>
<ns:styleId>AB029</ns:styleId>
</ns:Product>
我需要与所有这些重复节点进行比较,可以返回此节点内已更改的节点。请求所有人帮助我。 问候, 斯里兰卡。
答案 0 :(得分:4)
比较两个XML文档是一项具有挑战性的任务,部分原因是那些通常要求这个问题的人没有对问题的明确定义,实际上并不确切地知道他们在问什么对
这就是说,尝试这个标准的XPath 2.0功能:
答案 1 :(得分:1)
XML比较并非易事。我倾向于使用XMLUnit http://xmlunit.sourceforge.net/来解决这类问题
答案 2 :(得分:-1)
序列化为文字,&gt;&lt;之间没有空格并进行文本比较! 。如果你想要一个视觉表示,那么使用谷歌差异。或者使用deepequal