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();
}
}