сравнивая два комплекса XML в java - PullRequest
1 голос
/ 21 марта 2020

У меня есть требование, где мне нужно сравнить два xml, которые содержат сложные объекты, мне нужно сравнить, есть ли какие-либо изменения в xml до и после коммита

Что будет лучше и самый эффективный способ сравнения, я не смогу использовать xmlunit api

 <mf>
     <df dimId="7" memberOnly="true">
         <ml>
            <m>
                  <value>2458989</value>
                  <hid>10005</hierarchyId>
                  <lid>51</levelId>
                  <display>5/19/20</displayValue>
             </m>
         </ml>
      </df>
   </mf>

Попробовал это
DOMParser parser = new DOMParser ();

    parser.parse(new StringReader(cd));
    XMLDocument xmlDocument1 = parser.getDocument();
    parser.parse(new StringReader(fromDb));
    XMLDocument xmlDocument2 = parser.getDocument();
    //XMLCompare xmlDiff=new XMLCompare();
    XMLDiff xmlDiff = new XMLDiff();
    xmlDiff.setDocuments(xmlDocument1, xmlDocument2);
    xmlDiff.diff() //always returns true eventhough if we dont have any differences.

Я не смогу Чтобы использовать xmlUnit API, пожалуйста, помогите мне исправить это

<memberFilters>
      <dimensionFilter dimId="7" memberOnly="true">
         <memberList>
            <member>
               <value>2458989</value>
               <hierarchyId>10005</hierarchyId>
               <levelId>51</levelId>
               <displayValue>5/19/20</displayValue>
            </member>
         </memberList>
         <criteria>
            <preSelectedMemberList>
               <member>
                  <value>2458989</value>
                  <hierarchyId>10005</hierarchyId>
                  <levelId>51</levelId>
                  <displayValue>5/19/20</displayValue>
               </member>
            </preSelectedMemberList>
            <Criterion>
               <selection>Replace</selection>
               <criterionByLevel>
                  <hierarchyId>10005</hierarchyId>
                  <levelId>10009</levelId>
                  <levelName>Period</levelName>
               </criterionByLevel>
            </Criterion>
            <Criterion>
               <selection>Replace</selection>
               <criterionByMeasure>
                  <hierarchyId>10005</hierarchyId>
                  <levelId>51</levelId>
                  <levelName>Day</levelName>
                  <condition byValue="true" usePercent="false"> 
                     <conditionOp>AND</conditionOp>
                     <measureId>1522</measureId>
                     <measureName>value</measureName>
                     <compareOp>EQ</compareOp>
                     <value>0</value>
                     <roundDecimalDigits>0</roundDecimalDigits>
                  </condition>
               </criterionByMeasure>
            </Criterion>
         </criteria>
      </dimensionFilter>
   </memberFilters>
...