2013-11-21 22 views
1

對於我的使用XMLUnit 1.5的Java程序,我們比較了兩個XML文件(命名空間)。但是,我得到的XPathes不包含任何命名空間。我如何告訴XMLUnit待辦事項?那可能嗎?具有XMLUnit輸出與名稱空間的XPathes?

這裏是我的代碼:

 control = new FileReader(file1); 
     test = new FileReader(file2); 

     list = new ArrayList<Unterschied>(); 

     Diff diff; 
     diff = new Diff(control, test); 

     diff.overrideElementQualifier(new ElementNameAndAttributeQualifier()); 

     if (diff.similar()) 
     { 
      MessageDialog.openInformation(null, "Info", "Similar"); 
     } 

     else if (!diff.similar()) 
     { 

      DetailedDiff detDiff = new DetailedDiff(diff); 
      detDiff.overrieElementQualifier(new ElementNameAndAttributeQualifier()); 
      @SuppressWarnings("unchecked") 
      List<Object> differences = detDiff.getAllDifferences(); 


      for (Object object : differences) 
      { 
       Difference difference = (Difference) object; 
       if (!difference.isRecoverable() && !difference.getDescription().contains("number of child nodes")) 
       { 
        controlXPath = difference.getControlNodeDetail().getXpathLocation(); // without Namespaces! 
        controlValue = difference.getControlNodeDetail().getValue(); 
        testXPath = difference.getTestNodeDetail().getXpathLocation(); // without Namespaces!    
        testValue = difference.getTestNodeDetail().getValue(); 

        list.add(new Unterschied(controlOrt, controlWert, testOrt, testWert)); 
       } 
      } 

在我的計劃後來我評估這些XPathes獲得此節點的正確位置。通過這些位置,我可以在編輯器中選擇適當的文本,以便用戶可以看到差異。

我對評估代碼:

public void evaluateXPath(String xp, Node node) { 


    XPath newXPath = new XPathFactoryImpl().newXPath(); 

    XPathExpression xpExp = newXPath.compile(xpath); 

    NodeList nodeList = (NodeList) xpExp.evaluate(node, XPathConstants.NODESET); 

    int length = nodeList.getLength(); 
    for (int i=0; i < length; i++) { 

     IDOMNode iDOMnode = (IDOMNode) nodeList.item(i); 
     textEditor.selectAndReveal(iDOMnode.getStartOffset(), iDOMnode.getEndOffset()-iDOMnode.getStartOffset()); 
    } 
} 

感謝您的幫助和抱歉,我的英語不好! ;)

回答

0

不,XMLUnit 1.x只會返回純粹的XPath,根本沒有任何名稱空間指示。

XMLUnit 2.x(正在開發中)將使用可根據NS-URI配置的名稱空間的前綴返回XPath。

相關問題