java:利用xpath删除xml中的空节点

原始xml内容:

 1 <data>
 2   <a> </a>
 3   <b>b1</b>
 4   <awb>
 5     <awbpre>123</awbpre>
 6     <awbno></awbno>
 7   </awb>
 8   <spls>
 9     <spl />
10   </spls>
11 </data>

可用下面的代码去掉 <awbno></awbno>、<spls><spl/></spls>这二个空节点 (注<a> </a>中间有一个空格,不算空节点)

 1     @Test
 2     public void testDeleteEmptyNode() throws DocumentException {
 3         String xmlOrigin = "<data><a> </a><b>b1</b><awb><awbpre>123</awbpre><awbno></awbno></awb><spls><spl/></spls></data>";
 4         SAXReader saxReader = new SAXReader();
 5         Document document = saxReader.read(new ByteArrayInputStream(xmlOrigin
 6                 .getBytes()));
 7
 8         while (true) {
 9             @SuppressWarnings("unchecked")
10             List<Element> list = document.selectNodes("//*[not(node())]");
11             if (list == null || list.size() <= 0) {
12                 break;
13             }
14             for (Element e : list) {
15                 System.out.println(e.getName());
16                 e.getParent().remove(e);
17             }
18         }
19         System.out.println(document.asXML());
20
21     }

以上代码使用了dom4j

 

输出内容:

awbno
spl
spls
<?xml version="1.0" encoding="UTF-8"?>
<data><a> </a><b>b1</b><awb><awbpre>123</awbpre></awb></data>

即:

1 <data>
2   <a> </a>
3   <b>b1</b>
4   <awb>
5     <awbpre>123</awbpre>
6   </awb>
7 </data>

 

时间: 2024-08-02 16:27:13

java:利用xpath删除xml中的空节点的相关文章

利用XPath读取Xml文件

节点匹配路径Xpath 在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句xsl:template match = ""和模板应用语句xsl:apply-templates select = ""中,用引号括起来的部分必须能够精确地定位节点.具体的定位方法则在XPath中给出. 另外,也可以使用Xpath对XML文档进行搜索.定位. 之所以要引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件

框架-JAVA问题:删除数据库中数据的代码,测试不会报错,但实际什么都删不了

问题描述 JAVA问题:删除数据库中数据的代码,测试不会报错,但实际什么都删不了 这些操作做完后,数据库里的t_product表中,id=2的数据依然在,不是刷新的问题,刷新也还在 解决方案 为什么你的三个函数保存.修改.删除方法调用sql的时候都没有传递sql参数值呢? 解决方案二: 调用mapper里面的sql代码的时候,把要删除的id传进去了吗?不应该是sqlsession.delete("",参数);吗? 解决方案三: 参数没带.sqlsession.delect带上id 解决

用java实现:在下面xml中添加一本书的信息,用dom4j实现

问题描述 用java实现:在下面xml中添加一本书的信息,用dom4j实现<?xmlversion="1.0"?><library><book><id>b001</id><title>我是一个兵</title><author>大兵</author></book></library> 解决方案 解决方案二:我刚好做过类似的:book.xml文件<?xm

xml解析-java代码怎么读取xml中的各个属性值对应的内容

问题描述 java代码怎么读取xml中的各个属性值对应的内容 java代码怎么读取xml中的各个属性值对应的内容.比如得到连接Sql Server数据库的localhost sqlname username password

如何用最简单的方法删除xml文件下指定节点的全部内容?

问题描述 如何用最简单的方法删除xml文件下指定节点的全部内容? 要删除data节点及节点下的全部内容,应该怎么做?求代码! 解决方案 用什么语言呢?java里面操作xml的工具有dom4j和jdom等,需要的话回答一声,附上代码. 解决方案二: InputStream is = new FileInputStream("D://dom4j.xml"); SAXReader reader = new SAXReader(); Document doc = reader.read(is)

图节点删除-C语言 删除图中制定的节点

问题描述 C语言 删除图中制定的节点 /*/////////////////////////////////////////////////////////////*/ /* 图的深度优先遍历 / //////////////////////////////////////////////////////////////*/ #include #include struct node /* 图顶点结构定义 / { int vertex; / 顶点数据信息 / struct node *nextn

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中

java使用xpath解析xml示例分享_java

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初 XPath 的提出的初衷是将其作为一个通用的.介于XPointer与XSL间的语法模型.但是 XPath 很快的被开发者采用来当作小型查询语言. XPathTest.java 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java

java doom4j怎么解析xml下同一根节点的相同子节点

问题描述 javadoom4j怎么解析xml下同一根节点的相同子节点 解决方案 解决方案二:用xmlDocument.getElementsByTagName("子节点标签名")这个方法不行吗?解决方案三:得到根节点之后,使用循环就可以得到得到所有子节点啊.解决方案四:循环判断..解决方案五:可以根据名字获取所有子节点.解决方案六:类似代码Elementroot=document.getRootElement();IteRator<Element>eles=root.ele