使用XPath对象解析xml文件

1.DocumentBuilderFactory类  工厂API,使应用程序能从XML文档获取生成DOM对象树的解析器

其构造方法受保护,用newInstance()实例化

2.创建解析器

DocumentBuilder

使用这个类,应用程序员可以从XML获得一个Document。

这个类的实例可从DocumentBuilderFactory.newDocumentBuilder()方法获得。

一旦获得此类实例,可以从各种输入源解析XML。这些输入源是InputStreams,Files,URL和SAX InputSources。

----其构造方法是受保护的

 public static void main(String[] args) throws Exception {
// 创建解析工厂
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
// 创建解析器
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
// 通过解析器读取配置文件--返回Document对象树--org.w3c.dom.Document
Document doc = documentBuilder.parse("config/bookstore.xml"); // 创建XPath对象
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
/*
* 1.获取bookstore节点下的book属性category值为web下的第二个 title节点的文本内容
* bookstore-》book[@category='web'][2]-》title
* xpath路径:/bookstore/book[@category='web'][2]/title/text()
*/
String titleXpath = "/bookstore/book[@category='web'][2]/title/text()";
String titleVlue = (String) xPath.evaluate(titleXpath, doc, XPathConstants.STRING);
System.out.println("1:" + titleVlue);
/*
* 2.获取bookstore节点下book属性category值为web的title属性为en的节点内容
* xpath路径:/bookstore/book[@category='web']/title[@lang='en']/text() 选取属性为en
* 的title[@lang='en']
*/
String titleXpath2 = "/bookstore/book[@category='web']/title[@lang='en']/text()";
String titleValue2 = (String) xPath.evaluate(titleXpath2, doc, XPathConstants.STRING);
System.out.println("2:" + titleValue2);
/*
* 3.获取bookstore下book属性category值为cooking的title的lang属性的值
* xpath路径:/bookstore/book[@category='cooking']/title/@lang
*/
// 获取属性的值
String str1 = "/bookstore/book[@category='cooking']/title/@lang";
String shuxing = (String) xPath.evaluate(str1, doc, XPathConstants.STRING);
System.out.println("3:" + shuxing);
/*
* 4.获取bookstore节点下的所有book的节点集合 /bookstore/book
*/
// 返回值是节点集合
String str3 = "/bookstore/book";
NodeList all = (NodeList) xPath.evaluate(str3, doc, XPathConstants.NODESET);
// 开始遍历集合
for (int i = 0; i < all.getLength(); i++) {
// book节点
Element bookelt = (Element) all.item(i);// i是获取第几个
String titleValue = (String) xPath.evaluate("title", bookelt, XPathConstants.STRING);
String authorValue = (String) xPath.evaluate("author", bookelt, XPathConstants.STRING);
String yearValue = (String) xPath.evaluate("year", bookelt, XPathConstants.STRING);
String priceValue = (String) xPath.evaluate("price", bookelt, XPathConstants.STRING); System.out.println(
"title:" + titleValue + " author:" + authorValue + " year:" + yearValue + " price:" + priceValue); }
}

//config/bookstore.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
1.获取bookstore节点下的book属性category值为web下的第二个
title节点的文本内容
bookstore-》book[@category='web'][2]-》title
xpath路径:/bookstore/book[@category='web'][2]/title/text()
-->
<!--
2.获取bookstore节点下book属性category值为web的title属性为en的节点内容
xpath路径:/bookstore/book[@category='web']/title[@lang='en']
选取属性为en 的title[@lang='en']
-->
<!--
3.获取bookstore下book属性category值为cooking的title的lang属性的值
xpath路径:/bookstore/book[@category='cooking']/title/@lang
-->
<!--
4.获取bookstore节点下的所有book的节点集合
/bookstore/book
-->
<bookstore>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="web">
<title lang="en">Learning XML</title>
<author>XJS</author>
<year>2019</year>
<price>79.88</price>
</book>
<book category="web">
<title lang="uk">Learning stack</title>
<author>XJS</author>
<year>2019</year>
<price>100.00</price>
</book>
</bookstore>

使用XPath对象解析xml文件的更多相关文章

  1. 用JDK自带的包来解析XML文件(DOM+xpath)

    DOM编程不要其它的依赖包,因为JDK里自带的JDK里含有的上面提到的org.w3c.dom.org.xml.sax 和javax.xml.parsers包就可以满意条件了.(1)org.w3c.do ...

  2. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  3. 使用dom4j解析xml文件,并封装为javabean对象

    dom4j是一个java的XML api,性能优异.功能强大.易于使用.这里使用dom4j对xml文件进行解析,并完成对文件的封装. 实现对xml文件的解析,主要使用到的是dom4j中的SAXRead ...

  4. 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

  5. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  6. 用js(JavaScript-jQuery)解析XML文件 无法成功 获得XML对象,字符串一些心得

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html 解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有 ...

  7. js将xml对象,xml文件解析成xml dom对象,来对对象进行操作

    由于ie与其他的浏览器对于xml文件的解析方式不同,所以有不同的解析方式 1.1 IE解析xml文件的方式 var xmlDoc=new ActiveXObject("Microsoft.X ...

  8. DOM4J方式解析XML文件

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...

  9. 2017/4/26-DOM解析XML文件

    DOM解析XML 1.分析 DOM是JAVA自带的XML解析API.DOM首先将XML文件全部加载至内存中,然后再内存中创建DOM树,生成DOM树上的每个Node节点. 2.优点 1) 可以创建或修改 ...

随机推荐

  1. class path and classloader

    https://www.artima.com/insidejvm/ed2/linkmod5.html https://www.artima.com/insidejvm/ed2/securityP.ht ...

  2. 【Spark深入学习-11】Spark基本概念和运行模式

    ----本节内容------- 1.大数据基础 1.1大数据平台基本框架 1.2学习大数据的基础 1.3学习Spark的Hadoop基础 2.Hadoop生态基本介绍 2.1Hadoop生态组件介绍 ...

  3. linux每日命令(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linux ...

  4. yum只下载软件不安装的两种方法

    1 通过yum自带一个工具:yumdownloader rpm -qa |grep yum-utils yum -y install yum-utils* rpm -ql yum-utils 安装好后 ...

  5. Error - SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM

    I find using the following works quite well for SQL min/max dates after many DB related errors: Date ...

  6. Java中浮点数的处理

    import java.text.DecimalFormat; String addGold = String.valueOf(new DecimalFormat("0").for ...

  7. electron安装+运行+打包成桌面应用+打包成安装文件+开机自启动

    1.初始化node项目,生成package.json文件 npm init 2.安装electron,并保存为开发依赖项 npm install electron -D 3.根目录下新建index.j ...

  8. Django读取Mysql数据并显示在前端

    一.首先按添加网页的步骤添加网页,我的网页名为table.html, app名为web table.html放到相应目录下, froms文件提前写好 修改views.py ? 1 2 3 4 5 6 ...

  9. [转]Git忽略规则及.gitignore规则不生效的解决办法

    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: # 此为注 ...

  10. SQL Server 端口号的使用

    SQL Server 端口号的使用 服务器地址  逗号 端口号 服务器地址,端口号 xxx.xxx.xxx.xxx,0000 www.xxx.com,1533  (1533是SQL Server 的端 ...