2013-11-21 21 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。

相关问题