Java解析复杂xml文件,需要使用到xpath,首先使用了Jdom2。代码示例如下:
public static Document GetFileFromLocal(String filename){
try {
FileInputStream stream=new FileInputStream(String.format("d:/x下载/%s.xml", filename));
SAXBuilder saxBuilder = new SAXBuilder();
Document doc = saxBuilder.build(stream);
return doc;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
但是该xml解析器,不支持xpath。所以修改为dom4j。在dependency.xml文件里面添加依赖,maven会自动下载该jar文件:
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.0</version>
</dependency>
解析xml代码示例如下:
public class XmlHelper { public static Document parse(String url) { SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(url); } catch (DocumentException e) { e.printStackTrace(); } return document; } public static Element getRootElement(String url){ SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read(url); } catch (DocumentException e) { e.printStackTrace(); } return document.getRootElement(); } public static Element getXmlElement(Element rootNode, String xpath) { if(rootNode==null||xpath==""){ return null; } return rootNode.element(xpath); } public static String getXmlNodeText(Element rootNode, String xpath) { if(rootNode==null||xpath==""){ return null; } Element element= rootNode.element(xpath); if(element==null){ return ""; } return element.getText(); } }