XML读取--xPath技术

简介:

前言:

当使用dom4j查询比较深的层次结构的节点 很麻烦!!!

之前写的几篇博客关于XML的读取都是通过一层一层查找下去,这样的代码冗余难看,也加重了负担,这个时候xPath技术就应运而生了。

老样子:三个问题:

xPath是什么?
xPath怎么用?
xPath运用场景?

xPath是什么?

xPath了解

主要是用于快速获取所需的节点对象。是针对XML结构而言。

xPath运用场景?

爬虫(爬取XML结构的节点内容)

我也百度了挺多内容,不过 关于xPath技术的内容不多,而且都比较老,但还是来学习一下吧。简单了解下 以后要是用到了再来学习。

有很多种方法调用xPath技术
这里也就来介绍用Dom4j来操作xPath。

因为Dom4j内置了jar包支持xPath技术。
Dom4j下载

问题:
dom4j-2.1.0源码下载后并没有找到支持xPath的jar包
而dom4j-1.6.1源码下载后有jaxen-1.1-beta-6.jar 这个才是关键
具体原因我也不知道……百度google半天没找到 原因 ,要是有人知道 麻烦告诉我一下,谢谢。

注意:

1. 采用xpath查找需要引入jaxen-xx-xx.jar,否则会 java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常。
2. 如果层次太深还是不建议用xPath,而是用迭代取出,不然会爆内存

jaxen-1.1-beta-6.jar位置:dom4j-dom4j_1_6_1-->lib-->jaxen-1.1-beta-6.jar

导入:

前提先导入dom4j核心包:
dom4j-1.6.1.jar或者dom4j-2.1.0.jar都可以
然后导入jaxen-1.1-beta-6.jar放入项目中的lib文件夹 然后右键build path-->add to build path
效果图:
这里写图片描述

使用xpath方法

List<Node>  selectNodes("xpath表达式");   查询多个节点对象
Node        selectSingleNode("xpath表达式");  查询一个节点对象
@Test
    public void test2() throws Exception {
        // 1.读取xml文档,返回Document对象
        SAXReader reader = new SAXReader();
        Document doc = reader.read(new File(".\\src\\day33\\ss.xml"));
        //查询id为12的cons标签
        //使用xpath技术
        Element element=(Element)doc.selectSingleNode("//cons[@id='12']");
        
        System.out.print(element.getName());
        element.detach();
        
        FileOutputStream fileOutputStream=new FileOutputStream("D:\\zz.xml");
        XMLWriter writer=new XMLWriter(fileOutputStream);
        writer.write(doc);
        writer.close();
    }

意思就是删除了 id为12的cons元素

xPath语法:

/      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
//     相对路径       表示不分任何层次结构的选择元素。
*      通配符         表示匹配所有元素
[]      条件           表示选择什么条件下的元素
@     属性            表示选择属性节点
and     关系          表示条件的与关系(等价于&&)
text()    文本           表示选择文本内容

举例:

    
//选择id属性值为001,且name属性为eric的contact标签
xpath = "//contact[@id='001' and @name='eric']";  

//选择name标签下的文本内容,返回Text对象
xpath = "//name/text()";

xPath都是写在这些方法里面 返回的是Node元素 根据 最后的结果再强转为我们需要的

List<Node>  selectNodes("xpath表达式");   查询多个节点对象
Node        selectSingleNode("xpath表达式");  查询一个节点对象

举例:

xpath = "//@id";           //选择id属性节点对象,返回的是Attribute对象
xpath = "//name/text()";   //选择name标签下的文本内容,返回Text对象
xpath = "//name";          //选择name标签
            

具体语法和使用可以下载百度云:
截图效果: 我觉得ojbk
这里写图片描述

Xpath离线文档

自己存在百度云的 永久保存的,不丢失

目录
相关文章
|
5月前
|
XML JavaScript API
Ruby 教程 之 Ruby XML, XSLT 和 XPath 教程 3
Ruby XML, XSLT 和 XPath 教程
53 1
|
5月前
|
XML JavaScript API
Ruby 教程 之 Ruby XML, XSLT 和 XPath 教程 2
Ruby XML, XSLT 和 XPath 教程
42 0
|
5月前
|
XML 数据处理 数据格式
什么是 SAP UI5 XML Templating 技术
什么是 SAP UI5 XML Templating 技术
|
2月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
使用Java和XPath在XML文档中精准定位数据
|
2月前
|
XML JavaScript Java
【JAVA XML 探秘】DOM、SAX、StAX:揭秘 Java 中 XML 解析技术的终极指南!
【8月更文挑战第25天】本文详细探讨了Java中三种主流的XML解析技术:DOM、SAX与StAX。DOM将XML文档转换为树状结构,便于全方位访问和修改;SAX采取事件驱动模式,适用于大型文件的顺序处理;StAX则兼具DOM和SAX的优点,支持流式处理和随机访问。文中提供了每种技术的示例代码,帮助读者理解如何在实际项目中应用这些解析方法。
77 1
|
4月前
|
XML Java 数据格式
必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)
必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)
32 1
|
4月前
|
XML Java 数据库连接
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
技术笔记:Maven的pom.xml(坐标的gav、依赖的scope)
100 0
|
5月前
|
XML 网络协议 Java
XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览
XML Web服务是基于WSDL、SOAP、RDF和RSS等标准的网络应用程序组件技术。WSDL描述服务接口和消息格式,SOAP用于结构化信息交换,RDF描述网络资源,RSS则用于发布网站更新。Web服务特点是自包含、自描述,基于开放协议,可重用且能连接现有软件。WSDL文档包含`types`、`message`、`portType`和`binding`元素,定义服务操作和协议。SOAP协议规定消息格式,通过HTTP等传输。
544 1
|
4月前
|
XML 数据格式
程序技术好文:格式化xml
程序技术好文:格式化xml
78 0
|
5月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
113 0