使用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) 可以创建或修改 ...
随机推荐
- linux每日命令(38):iostat命令
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同 ...
- 扩展layui中的自带字体图标
项目中,虽然layui的字体图标库中已经有了1000多个图标了,但是也有时候不能满足我们自定义图标的需求,所以需要进行自定义,具体步骤如下: 1.在iconfont上找到自己喜欢的图标,也可以上传ui ...
- 不8000就业,不还实习费的AICODER全栈实习二期开始报名
4月17日是个伟大的日子,AICODER全栈实习一期班,正式开始!伙伴们已经撸起袖子加油干了. 二期班开始报名 二期班定于5月17日开班,从二期班开始,实习费用调整如下: 三个月模式实习费,调整为12 ...
- 【iCore1S 双核心板_ARM】例程二:读取ARM按键状态
实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...
- 对TextFile格式文件的lzo压缩建立index索引
转自:http://blog.csdn.net/yangbutao/article/details/8519572 hadoop中可以对文件进行压缩,可以采用gzip.lzo.snappy等压缩算法. ...
- Numpy 定义矩阵的方法
import numpy as np #https://www.cnblogs.com/xzcfightingup/p/7598293.html a = np.zeros((2,3),dtype=in ...
- Git 目录
linux通过用户名.密码提交的方式搭建私有git服务端 centos 6.5 6.6 6.7安装gitlab教程(社区版) Git 初始化项目.创建合并分支.回滚等常用方法总结 Git 错误集锦
- CentOS 7 设置静态IP
cd /etc/sysconfig/network-scripts/ sudo vi ifcfg-eno16777736 BOOTPROTO=static #dhcp改为static(修改) IPAD ...
- Eclipse使用心得与技巧
一. 常用快捷键(熟练使用快捷键可以充分提高编程效率,吐血整理...) 1,Alt + ↑上方向键:向上移动选中的代码,你可以把一行或者一段代码直接上移几行 2,Alt + ↓下方向键:向下移动选中的 ...
- [1]朝花夕拾-JAVA类的执行顺序
最近在温习java的基础,刷题刷到java的执行顺序,很汗颜,答案回答错了! 题目类似如下: package com.phpdragon.study.base; public class ExecOr ...