Java解析复杂xml文件,使用Xpath

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

  

原文地址:https://www.cnblogs.com/363546828/p/8759659.html