这样的文件
<Elements>  
    <title>标题</title>  
</Elements>
选择title节点为 document.selectNodes("/Elements/title" );  但是如果根节点有参数<Elements xmlns="http://www.163.com" xmlns:dc="http://www.163.com">
     <title>标题</title>  
</Elements>
那么要选择title节点应该如何写?

解决方案 »

  1.   

    这个是命名空间~`
    有属性和没属性用xpath询址是一样的~`
    在代码中要注明使用的命名空间就能找得到title了
      

  2.   

    对于代命名空间的xml解析,如果通过dom4j的xpath解析需要这样:   //DOM4j parser xml from file
       SAXReader reader = new SAXReader();
       
       Document doc = reader.read(new java.io.FileInputStream(tempfilename));  
     
       //Query ProcessId's value with Xpath 
       XPath xpath = doc.createXPath("//Package:WorkflowProcesses/Package:WorkflowProcess/@Id");
       xpath.setNamespaceURIs(java.util.Collections.singletonMap("Package", "http://www.wfmc.org/2002/XPDL1.0"));
       //Node node = xpath.selectSingleNode(doc);
       List processes = xpath.selectNodes(doc);
      

  3.   

    非常感谢,经过您的指点和网上查的资料,终于搞定了。:)马上给分备份上我用的方法
    XML举例:<Elements   xmlns="http://www.163.com"   xmlns:dc="http://www.163.com"> 
           <test>
              <title> 标题 </title>    
           </test> 
    </Elements>
    程序片段:SAXReader saxReader = new SAXReader();     
    Document document = saxReader.read(new File(filename));    HashMap xmlMap = new HashMap();   
    xmlMap.put("plugins","http://www.163.com");   //假设的命名空间
    XPath x = document.createXPath("//plugins:test/plugins:title");   //读取二级节点,研究了半天
    x.setNamespaceURIs(xmlMap);            
    Element valueElement = (Element)x.selectSingleNode(document);   
    System.out.println(valueElement.getText());   //输出该节点内容