使用XPath对象解析xml文件
使用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文件的更多相关文章
- 用JDK自带的包来解析XML文件(DOM+xpath)
DOM编程不要其它的依赖包,因为JDK里自带的JDK里含有的上面提到的org.w3c.dom.org.xml.sax 和javax.xml.parsers包就可以满意条件了.(1)org.w3c.do ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 使用dom4j解析xml文件,并封装为javabean对象
dom4j是一个java的XML api,性能优异.功能强大.易于使用.这里使用dom4j对xml文件进行解析,并完成对文件的封装. 实现对xml文件的解析,主要使用到的是dom4j中的SAXRead ...
- 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...
- 用js(JavaScript-jQuery)解析XML文件 无法成功 获得XML对象,字符串一些心得
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/7822962.html 解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有 ...
- js将xml对象,xml文件解析成xml dom对象,来对对象进行操作
由于ie与其他的浏览器对于xml文件的解析方式不同,所以有不同的解析方式 1.1 IE解析xml文件的方式 var xmlDoc=new ActiveXObject("Microsoft.X ...
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
- 2017/4/26-DOM解析XML文件
DOM解析XML 1.分析 DOM是JAVA自带的XML解析API.DOM首先将XML文件全部加载至内存中,然后再内存中创建DOM树,生成DOM树上的每个Node节点. 2.优点 1) 可以创建或修改 ...
随机推荐
- 【emWin】例程二十四:窗口对象——Header
简介: HEADER 小工具用于标记表格的列,本例程示例演示如何使用HEADER小工具. 触摸校准(上电可选择是否进入校准界面) 实验指导书及代码包下载: 链接:http://pan.baidu.co ...
- CentOS配置Tomcat开机启动
通常我们进行服务器维护的时候需要注意点为,服务器上的容器一般都是开机启动,减少停机后应用还需要一个一个启动的麻烦. 1) 新建tomcat文件 touch /etc/rc.d/init.d/tomca ...
- 图片相似原理--Java实现
前阵子在阮一峰的博客上看到了这篇<相似图片搜索原理>博客,就有一种冲动要将这些原理实现出来了. Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相 ...
- js实现滑动的弹性导航
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- bigtable原理
bigtable原理 数据模型 A Bigtable is a sparse, distributed, persistent multi-dimensional sorted map. The ma ...
- java.util.Stack(栈)的简单使用
import java.util.Stack; import org.junit.Before; import org.junit.Test; /** * Stack(栈)继承了Vector类,底层实 ...
- 面试题思考:GET和POST两种基本请求方法的区别
面试回答: GET请求在URL中传送的参数是有长度限制的,而POST没有. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息. GET参数通过URL传递,POST放在Re ...
- 整型数字转utf8
static std::string codePointToUTF8(unsigned int cp){ std::string result; // based on description fro ...
- EXCEL 2007施工进度横道图制作步骤及实战练习
[知识讲解] 1.将图表中的部分图形“隐藏”起来 如果为了实现某种特殊的图表效果,需要将图表中的部分图形“隐藏”起来,除了将该系列删除外(有时候这种方法不能达到所需要的效果),还可以通过下面的方法来实 ...
- 1. Mysql数据库的安装
1. Mysql数据库的安装 (1)打开Mysql安装软件,同意相关协议进入下一步安装,在选择安装类型中选择[自定义]进入下一步安装. (2)选择安装的组件信息. (3)服务器软件安装目录 (4)数据 ...