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

摘要:
文件名));SAXBuildersaxBuilder=newSAXBuilder();Documentdoc=saxBuilder.build(流);}returnnull;版本>}publicstaticElementgetRootElement(Stringurl){SAXheadereader=newSAXheader();

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

  

免责声明:文章转载自《Java解析复杂xml文件,使用Xpath》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mysql 10053 SocketException 你的主机中的软件中止了一个已建立的连接。Tomcat PUT方法任意文件上传(CVE-2017-12615)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ToString和Convert.ToString处理null值

http://www.cnblogs.com/qinge/p/5687806.html文章来源 1.Convert.ToString能处理字符串为null的情况。 测试代码如下: 1 2 3 4 5 6 static void Main(string[] args) {   string msg = null;   Console.W...

如何用 Java 对 PDF 文件进行电子签章

一、概述 二、技术选型 三、生成一个图片签章 四、如何按模板生成PDF文件 五、如何生成PKSC12证书 六、如何生成一个高清晰的签章 七、如何进行多次PDF签名 八、总结 一、 概述 印章是我国特有的历史文化产物,古代主要用作身份凭证和行驶职权的工具。它的起源是由于社会生活的实际需要。早在商周时代,印章就已经产生。如今的印章已成为一种独特的,融实用性和艺...

delphi新语法之泛型实现的对象池模板

现在的DELPHI因为支持泛型的语法,所以也能支持模板编程了。 // 标准模板 unit UntPools; interface uses Classes, SysUtils, UntThreadTimer; type { 这是一个对像池, 可以池化所有 TObject 对像 } { 用法: 在一个全局的地方定义 var Pooler: TObjectP...

java大文件(视频)切片上传

java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1、服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作 2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求 3、服:每接收到一个Socket就建立一个新的线程来处理它 4、客:...

Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句'' ""作用

//方法一,可以验证登录,但方法不实用。packagecom.swift; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement...

Jackson 框架JSON、XML、List、Map直接相互转换

博客分类:   json   参考:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html 在其基础上做了稍微调整 详情见附件 jackson API文档:http://tool.oschina.net/apidocs/apidoc?api=jackson-1.9.9 Jacks...