dom4j解析带有命名空间的xml

xmlns是XML Namespaces的缩写

普通的xml解析:
xml示例:

<result>
    <message>
        <title>Good</title>
    </message>
    <message>
        <title>Better</title>
    </message>
    <message>
        <title>Best</title>
    </message>
</result>


dom4j:

Document resultDoc = null;
try {
	resultDoc = DocumentHelper.parseText(result);
} catch (DocumentException e) {
	e.printStackTrace();
}
Element rootEle = resultDoc.getRootElement();
List<Node> mesList = rootEle.selectNodes("//result/message");



带有xmlns的xml解析:
xml示例:

<result xmlns="http://www.xxx.com/xxxx/xxxx" >
    <message>
        <title>Good</title>
    </message>
    <message>
        <title>Better</title>
    </message>
    <message>
        <title>Best</title>
    </message>
</result>


dom4j:

Document resultDoc = null;
try {
	resultDoc = DocumentHelper.parseText(result);
} catch (DocumentException e) {
	e.printStackTrace();
}
Element rootEle = resultDoc.getRootElement();
String nsUri = rootEle.getNamespaceURI();
Map nsMap = new HashMap();
nsMap.put("rootNs", nsUri);
XPath mesXpath = resultDoc.createXPath("//rootNs:result/rootNs:message");
mesXpath.setNamespaceURIs(nsMap);
List<Node> mesList = mesXpath.selectNodes(resultDoc);


当然,无论根节点有没有命名空间,第二种方式都适用。

 

你可能感兴趣的:(xml,dom4j,xmlns)