Сравнение XML с использованием xquery - PullRequest
3 голосов
/ 07 декабря 2011

Я довольно новичок в 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>

Мне нужно сравнить все эти повторяющиеся узлы, которые могут вернуть измененные узлы в этом узле.Проси всех помочь мне с таким же.С уважением, Шри.

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

Сравнение двух XML-документов является сложной задачей , отчасти потому, что люди, которые, как правило, просят об этом, не имеют четкого определения проблемы и фактически не знают точно, о чем они просят .

При этом попробуйте эту стандартную функцию XPath 2.0 :

deep-equal()

1 голос
/ 07 декабря 2011

Сравнение XML не тривиально. Я склонен использовать XMLUnit http://xmlunit.sourceforge.net/ для такого рода проблем

0 голосов
/ 01 июня 2015

сериализуйте в текст без пробелов между> <и сравнивайте текстуально! , Если вы хотите визуальное представление, то используйте Google diff. Или используйте deepequal </p>

...