-
2021-02-12 20:16:40
使用XPATH解析XML文件
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class TestXPath {
public static void main(String[] args) throws DocumentException {
//1 创建SAXReader对象
SAXReader reader = new SAXReader();
//2 读XML文件
Document doc = reader.read("web/book.xml");
//得到第一个author节点
Node node = doc.selectSingleNode("//author");
System.out.println("节点的名称:" + node.getName() + "\t" + node.getText());
//得到所有author节点
List nodeList = doc.selectNodes("//author");
for (Iterator iBook = nodeList.iterator();iBook.hasNext();) {
Node n = iBook.next();
System.out.println("节点的名称:" + n.getName() + "\t" + n.getText());
}
List nameList = doc.selectNodes("//name");
for (Iterator iBook = nameList.iterator();iBook.hasNext();) {
Node n = iBook.next();
System.out.println("节点的名称:" + n.getName() + "\t" + n.getText());
}
}
}
需要准备DOM4J 的 jar 包、Jaxen 的 jar 包。
更多相关内容 -
javaxml解析源码-XML-Parser:在Java中使用xPath解析xml文件源代码
2021-05-24 12:20:25在Java中使用xPath解析xml文件源代码。 返回 基于数据节点xPath解析xml文件,并将xml文件数据返回到列表列表中。 键-列名。 值-列的数据。 如何使用 查找列的唯一路径,并使用它来获取该节点(列)的数据。 -
XPATH解析xml文件
2021-03-19 18:17:25XPATH解析xml文件一、什么是XPATH访问路径有查找本地xml文件2.解析网上xml文件 一、什么是XPATH 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。 访问路径有 路径表达式: 1. ...XPATH解析xml文件
一、什么是XPATH
是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
访问路径有
路径表达式: 1. / : 从根节点开始查找 2. // : 重发起查找的的节点位置查找后节点 (使用最多) 3. . : 查找当前节点 4. .. : 选择属性 5. @ : 属性使用方法: [@ 属性名='值'] [@ 属性名>'值'] [@ 属性名<'值'] [@ 属性名!='值']
查找本地xml文件
将已写好xml文件保存在硬盘的一个位置,我将它保存在E盘
package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.XPATH解析; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import java.io.FileInputStream; import java.io.IOException; import java.util.List; public class Demo1_XPATH解析本地xml文件 { public static void main(String[] args) throws IOException, DocumentException { //1、获取输入流-xml文件 FileInputStream fis = new FileInputStream("e://Demo1.xml"); //2、创建xml读取对象 SAXReader sr = new SAXReader(); //3、读取并得到文档对象 Document doc = sr.read(fis); //4、通过文档获取根元素,selectNodesca查询多个 List<Node> names = doc.selectNodes("//name"); for(int i=0;i<names.size();i++){ System.out.println(names.get(i).getName()); System.out.println(names.get(i).getText()); } System.out.println("----------------------"); //5、selectSingleNode单查询 Node n = doc.selectSingleNode("//book[@id='1001']//name"); System.out.println(n.getName()+":"+n.getText()); //关闭文件流 fis.close(); } }
运行结果:
name 金苹果 name 银苹果 ---------------------- name:金苹果 Process finished with exit code 0
2.解析网上xml文件
接下来我们来解析一个可以查询手机号码相关信息的网址。
地址为(http://apis.juhe.cn/mobile/get?%20phone=16670002013&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253)
然后将解析这个网站将手机号码里面的内容解析出来。package kkb.class_code.Leve4_核心类库.Demo8XML与JSON.XPATH解析; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class Demo2_XPATH解析网络xml文件 { public static void main(String[] args) throws IOException, DocumentException { //1、获取到xml资源的输入流 String phone = "16670002013"; URL url = new URL("http://apis.juhe.cn/mobile/get?%20phone=" + phone + "&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253"); //打开链接 URLConnection conn = url.openConnection(); //拿下网址的输入流 InputStream is = conn.getInputStream(); //2、创建一盒XML读取对象 SAXReader sr = new SAXReader(); //3、通过读取对象 读取xml数据吗,并返回文档对象 Document doc = sr.read(is); //4.XPATH寻找地址 Node node = doc.selectSingleNode("//company"); System.out.println("号码附属公司:" + node.getText()); } }
结果:
号码附属公司:联通
在上篇笔者写过通过获取元素解析xml文件,两者的区别不大,查询并没有说有提高,但是代码的操作会简单一点。
-
Xpath 解析 XMl文档
2021-11-27 11:21:58Xpath 解析 XMl文档 Xpath 语法(路径表达式) 路径表达式: 1. / : 从根节点开始查找 2. // : 从发起查找的节点位置,查找后代节点 (最常用的) 3. . : 查找当前节点 4. .. : 查找父节点 5. @ : 选择...Xpath 解析 XMl文档
Xpath 语法(路径表达式)
路径表达式:
1. / : 从根节点开始查找 2. // : 从发起查找的节点位置,查找后代节点 (最常用的) 3. . : 查找当前节点 4. .. : 查找父节点 5. @ : 选择属性 (常用) 1. [@属性名='值'] 2. [@属性名>'值'] 3. [@属性名<'值'] 4. [@属性名!='值']
举个例子
// 这个是Demo1.xml 文档内容 <?xml version="1.0" encoding="UTF-8"?> <books> <book id="1001"> <name>金苹果</name> <info>河神曰:你掉的苹果是这个金苹果吗?</info> </book> <book id="1002"> <name>银苹果</name> <info>河神曰:你掉的苹果是这个银苹果吗?</info> </book> </books> // 这个是 Xpath 表达路径 // 1. 找到 book中 所有的 name // /books//book//name // 2. 找到 book id为1001 的 info // //book[@id='1001']//info
使用步骤
通过Node类的两个方法,来完成查找
方法1:
// 根据路径表达式,查找匹配的 单个节点 Element e = selectSingleNode("路径表达式"); //举例 Node n = selectSingleNode("/books//book[@id='1002']//name"); System.out.println(n.getName()+":"+n.getText()); // name:银苹果
方法2:
List<Element> es = selectNodes("路径表达式"); // 举例 List<Node> names = doc.selectNodes("//name"); for(int i =0;i<names.size();i++){ System.out.println(names.getName()+":"+names.getText()); // name:金苹果 // name:银苹果 }
下面分别是 Xpath解析本地文件 和解析网络文件的完整代码模板
// 解析本地文件 //1. 获取输入流 FileInputStream fis = new FileInputStream("Demo1.xml"); //2. 创建xml 读取对象 SAXRead saxread = new SAXRead(); //3. 读取并得到文档对象 Document doc = saxread(fis); //4. 通过对象+Xpath 查找 name节点 List<Node> names = doc.selectNodes("//name"); //遍历 for(int i = 0;i<name.size();i++){ System.out.println(names.getName()+":"+names.getText()); }
// 解析网络文件 //1. 获得xml 资源的输入流 URL url = new URL(" http://apis.juhe.cn/mobile/get?phone=18877778888&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253"); URLConnection conn = url.openConnection(); InputStream is = conn.getInputStream(); //2. 创建一个XML读取对象 SAXRead saxread = new SAXRead(); //3. 通过读取对象 读取XML数据,返回文档对象 Document doc = saxread.read(is); //4. Xpath 匹配单个节点 Node n = doc.selectSingleNode("//company"); System.out.println(n.getName()+":"+n.getText());
-
XPathUtil,根据Xpath解析xml文件
2018-01-15 15:02:32根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ... -
java使用xpath解析xml示例分享
2020-09-04 13:25:32XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力,下面是一小示例,需要的朋友可以参考下 -
Dom4j结合XPath解析XML文件路径表达式
2021-09-07 15:19:53XML节点访问的路径表达式【相对路径】和【绝对路径】的匹配原则 -
Python使用XPath解析XML文档
2021-04-26 18:41:01XPath(XML Path Language)是一种小型的查询语言:1)可在XML中查找信息2)支持HTML的查找3)通过元素和属性进行导航python开发使用XPath条件:由于XPath属于lxml库模块,所以首先要安装库lxmlXPath的使用方法:首先讲...XPath(XML Path Language)是一种小型的查询语言:
1)可在XML中查找信息
2)支持HTML的查找
3)通过元素和属性进行导航
python开发使用XPath条件:
由于XPath属于lxml库模块,所以首先要安装库lxml
XPath的使用方法:
首先讲一下XPath的基本语法知识:
四种标签的使用方法
1) // 双斜杠 定位根节点,会对全文进行扫描,在文档中选取所有符合条件的内容,以列表的形式返回。
2) / 单斜杠 寻找当前标签路径的下一层路径标签或者对当前路标签内容进行操作。
3) /text() 获取当前路径下的文本内容。
4) /@xxxx 提取当前路径下标签的属性值
5) | 可选符 使用|可选取若干个路径 如//p | //div 即在当前路径下选取所有符合条件的p标签和div标签
6) . 点 用来选取当前节点
7) .. 双点 选取当前节点的父节点
注:以下代码在Python3.6.1下调试通过
一、Python读取XML简单实例
from lxml import etree
text = """
1
2008
141100
4
2011
59900
68
2011
13600
"""
root = etree.XML(text)
for child in root:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
from lxml import etree
text = """
1
2008
141100
4
2011
59900
68
2011
13600
"""root = etree.XML(text)
for child in root:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
二、Python读取本地XML简单实例
如果XML文档存放在本地,可以文件对象打开xml就读取成字符串类型,也可以直接tree = etree.parse(“D:/lujing/test.xml”)读取。
etree.parse("D:/lujing/test.xml")读取。
from lxml import etree
tree = etree.parse("D:/lujing/test.xml")
root = tree.getroot()
for child in root:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
etree.parse("D:/lujing/test.xml")读取。
from lxml import etree
tree = etree.parse("D:/lujing/test.xml")
root = tree.getroot()for child in root:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
三、为防止读取XML出错导致程序退出,可使用try捕获异样
from lxml import etree
tree = etree.parse("D:/lujing/test.xml")
root = tree.getroot()
root = etree.XML(text)
for child in root:
try:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
print('neighbor', child.xpath('./neighbor/@name')[1])
except Exception as e:
print(e)
from lxml import etree
tree = etree.parse("D:/lujing/test.xml")
root = tree.getroot()root = etree.XML(text)
for child in root:
try:
print(child.tag, child.attrib)
print('rank',child.xpath('./rank/text()')[0])
print('year', child.xpath('./year/text()')[0])
print('gdppc', child.xpath('./gdppc/text()')[0])
print('neighbor', child.xpath('./neighbor/@name')[0])
print('neighbor', child.xpath('./neighbor/@name')[1])
except Exception as e:
print(e)
-
用XPath解析XML文件
2016-11-10 15:41:26用XPath解析XML文件 一、XPath XPath 是一门在 XML 文档中查找信息的语言, 可用来在 XML 文档中对元素和属性进行遍历。 XPath表达式比繁琐的文档对象模型(DOM)代码要容易编写得多。如果需要从XML文档中... -
java使用XPath解析xml
2021-04-08 10:48:23XML文件:widgets.xmlwidTextpublic static void examineXmlFile(String path) throws Exception {DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();domFactory.setNamespaceAware(true);... -
使用 dom4j + xpath 解析 xml 文件
2021-08-31 21:51:36dom4j + xpath 对xml文件中的节点进行快速定位 现代的框架大部分都是采用 dom4j + xpath 来解析 xml 文件的 注意:使用 xpath 的话,除了dom4j jar 包,还需导入 jaxen jar 包,因为 jaxen 是 xpath 专门的组件 ... -
xPath解析XML文件
2019-01-26 19:16:00一种:不带名称空间的XML,可以直接用xapth表达式解析 1 Document document = DocumentHelper.parseText(resultXML); 2 Element ele = (Element) document.selectSingleNode("/CUSTINFORESPONSE/MSGBODY"); 二... -
xpath解析xml文件
2018-12-09 23:09:24最近在做xml文件的解析,需要获取其中某些节点或某些属性,一开始用循环来做,显得很蠢,后来了解到dom4j,以及xpath,代码可读性显著增强。 首先取得xml文件的根结点 SAXReader reader = new SAXReader(); File ... -
JsoupXpath解析xml文件方法
2022-01-09 12:44:11import cn.wanghaomiao.xpath.model.JXDocument; import cn.wanghaomiao.xpath.model.JXNode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.File; import java.util.List; public ... -
利用lxml的xpath解析XML
2021-12-02 22:34:39lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高. 导入模块 from lxml import etree Element类 Element是XML处理的核心类,Element对象可以直观的理解为XML的节点,大部分... -
通过python lxml tree.xpath解析xml
2021-07-16 16:30:47I try to parse a huge file.... I try to take , but I can'tIt works only without this stringxml2 = '''Tracking ID'''from lxml import etreetree = etree.XML(xml2)nodes = tree.xpath('/Pa... -
XML解析包xPath
2018-04-19 20:25:07xPath.jar,XML解析包。XPath是获取xml中数据的一种方式,其简单语法易用。 -
Java版本Xpath解析Xml文件文本用法说明
2020-09-28 18:31:32java或者Android开发中进程使用到xml解析, 本文讲述Xpath解析方式用法. 本文通过代码的方式呈现,不讲理论了. 每个函数和关键代码块都有注释,请看官们注意看即可 类解释: XpathParser: Xpath核心解析类,通过该类... -
c#通过xpath读取xml示例
2021-01-01 01:19:24需要修改Main方法第一行代码的路径为你的books.xml文件绝对路径或相对路径。代码演示了XPath各种语法的使用情况 books.xml 代码如下:<?xml version=”1.0″ encoding=”ISO-8859-1″?> ”COOKING”> <... -
pythonxpath解析和xml格式总结
2021-08-16 19:17:111.xpath解析之xml from lxml import etree # 1.专业术语 """ 树:整个HTML或者xml结构 节点:HTML中的每个标签,xml中标签就是节点 根节点:树的第一个节点,HTML的根节点就是HTML标签 属性:节点属性(html中就是... -
java如何使用xpath解析xml
2021-04-23 14:26:15java如何使用xpath解析xml发布时间:2020-12-08 12:28:00来源:亿速云阅读:60作者:小新这篇文章给大家分享的是有关java如何使用xpath解析xml的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来... -
DOM4J - XPATH解析XML
2021-12-23 20:22:25通过文档对象+XPATH解析XML 查看所有name节点 /* List names = doc.selectNodes("//name"); //查多个 for(int i=0;i 使用步骤(网络) package myxml; import org.dom4j.Document; import org.dom4j.... -
Xpath 解析xml文件转化为csv文件
2012-10-12 13:48:22Xpath 解析xml 文件,并转化为csv文件 -
java中使用Dom4j的xPath解析xml文件
2018-04-05 14:26:54XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将 其作为一个通用的、介于... -
PHP使用xpath解析XML的方法详解
2020-12-20 01:56:00本文实例讲述了PHP使用xpath解析...Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据。 PHP解析XML推荐教程:PHP4和PHP5版本下解析XML文档的操作方法 需要PHP解析的X -
Xpath解析XML文件
2016-11-14 20:15:00* 解析xml文件的工具类。 */ public class XMLParser { private String path; /** * 构造器,要解析xml文档,首先必须先指导xml文档在哪吧。 */ public XMLParser(String path) { this.path = path; } /... -
使用XPath对象解析xml文件
2019-04-14 19:45:00使用XPath对象解析xml文件 1.DocumentBuilderFactory类 工厂API,使应用程序能从XML文档获取生成DOM对象树的解析器 其构造方法受保护,用newInstance()实例化 2.创建解析器 DocumentBuilder 使用这个类,应用... -
Dom和xpath解析xml文件
2018-12-10 16:30:26Mybatis在初始化过程中处理mybatis-config.xml文件以及映射文件时,采用DOM进行解析,并结合使用XPATH解析XML配置文件。如果对前端熟悉的伙伴,应该了解前端的DOM树,这里也一样,DOM会将整个xml文件加入内存中并...