用递归法输出XML的节点value

spring循环递归获取XML指定属性value spring读取XML属性 XML文本样式 <clinic> <!-- 诊疗费价表 去掉挂号费--> <clinicpricedict> <clinictypelist clinictype = "急诊" price = "6.00"></clinictypelist> <clinictypelist clinictype = "专家门诊" price = "9.00"></clinictypelist> & 阅读详情

 老师要求把XML格式的文件里的节点信息提取出来,输出成CSV格式的文件。

 

由于一直不善用JAVA,因此原定用C++实现,但是网上搜了下,用C++操作XML的话,没有内置库,只能自己下载API,而比较流行的API是MSXML和tinyXML,看了下这两个库的sample,感觉可用性一般,特别是tinyXML,简直和javascript操作xml的方式如出一辙,因此尝试用JAVA实现这个小功能,反正和项目无关,无伤大局,不过有时候确实得承认,在WEB数据处理方面,JAVA在人性化上确实比C++要高一个档次。

 

网上搜了一些JAVA DOM编程方面的示例代码,套路基本都一样,都是利用DocumentBuilder去操作,然后利用循环挨个提取节点。但是发现代码有些冗余,特别是循环部分,每一级的节点处理实际都是重复代码。因此想到了不如用递归法来实现这个功能,原因如下:

 

1. 从根节点开始,开始向下一级一级访问,每个节点在处理的时候,流程都是这样的:当无子节点的时候直接输出节点value,当有子节点的时候,继续往下访问。

2. 当访问节点的时候,会先判断节点是不是null,当是null的时候,则停止向下访问,因此递归跳出条件就是:节点不为空。

 

实现的代码如下:

 

public void printNode(Node n){
	for(Node node=n;node!=null;node=node.getNextSibling()){
		if(node.hasChildNodes()){
			printNode(node.getFirstChild());
		}
		else{
			System.out.print(node.getNodeValue());
		}
	}
}




一共9行代码,简单明了,可读性高于循环法。

sql server xml字段的操作 今天用到sql server 的xml字段,首先这个项目中的xml字段都存为了ntext字段,所以第一个操作 ntext 转化为 xml以下摘自http://blog.darkthread.net/blogs/darkthreadtw/archive/2008/09/18/sql2005-nvarchar-to-xml.aspx XmlString是一個NText欄位,裡面放存放的內容來自*.xm 阅读详情

相关推荐

从零搭建无人机仿真环境:ROS 2与Gazebo Fortress实战指南

本文提供了一份详细的无人机仿真环境搭建实战指南,基于Ubuntu 22.04系统,整合ROS 2 Humble与Gazebo Fortress两大核心工具。通过分步讲解安装、配置及桥接过程,并引入PX4飞控与XTDrone2工具链,帮助开发者快速构建一个稳定、高效的无人机算法开发与测试平台,有效降低真机测试的成本与风险。

water的专栏 430

查询XML节点 value

查询XML节点value:通过nodes指定到节点通过Value属性取出值 Declare@Xmlxml set@Xml='<Employee><ID>1</ID><ID>2</ID></Employee>' SELECTID.value('.','Nvarchar(500)')...

weixin_34179762的博客 316

UVM仿真卡住了?别慌!手把手教你定位并解决PH_TIMEOUT超时错误

本文详细解析了UVM仿真中常见的PH_TIMEOUT超时错误,提供了从错误诊断到解决方案的完整指南。通过理解错误机制、分析调试技巧和常见问题场景,帮助验证工程师快速定位并解决这一棘手问题,同时分享了预防措施与最佳实践,提升仿真效率。

weixin_28683065的博客 368

c++实现Xml递归版本解析

70 void BackElement(TiXmlElement* RootElement){ 71 for(TiXmlElement* StuElement = RootElement->FirstChildElement();StuElement != NULL; StuElement = StuElement->NextSiblingElement())...

weixin_44707806的博客 414

深入解析国家企业征信系统瑞数6vmp算法逆向实战

本文深入解析了国家企业征信系统所采用的双层防护机制,重点聚焦于瑞数6代vmp算法的逆向实战。文章详细拆解了从加速乐521状态码的绕过,到瑞数412挑战的核心算法还原过程,提供了通过动态Hook、日志分析进行算法逆向,并用Python实现自动化请求链的完整技术方案,旨在为安全研究与技术学习提供参考。

yellow的专栏 612

当OTN网络遭遇LOS告警:5个运维老手才知道的故障定位技巧(含CA动作对照表)

本文深入解析OTN网络中LOS告警的实战定位技巧,涵盖光功率深度诊断、模块差异分析及核心的CA动作机制。通过逆向追踪告警流与对照速查表,帮助运维人员快速锁定故障段落,区分硬软故障,并掌握系统健康度评估方法,从而提升排障效率与网络稳定性。

weixin_29266007的博客 552

XPath遍历输出XML所有叶子节点

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。 XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。 W3School 提供了详细的XPath教程。http://www.w3school.com.cn/xpath/ 本文所展示的遍历算法参考自

坚果壳不是硬壳的专栏 8111

使用SSC添加大量的SDO条目

使用SSC添加大量的SDO条目 SSC用表格添加SDO,PDO部分必须指定到0x1600和0x1A00分配TxPdo和RxPdo映射,在0x1C12和0x1C13分别分配到SM2和SM3。在0x6000和0x7000未指定的entry就是SDO部分。

PI_sunyang的博客 3166

Java递归遍历XML所有元素。

Java递归遍历XML所有元素    做一个递归遍历XML的例子,为更为复杂的解析工作做基础。    目标:遍历所有的元素节点,并且取出来其中的值,结果打印到控制台。    源代码如下:         本程序依赖DOM4j包  import org.dom4j.Document;import org.dom4j.D

风神谪凡的记忆 1959

【补充篇】三万字了解AUTOSAR软件架构(一)

主要讲解了AUTOSAR软件架构的分层及各个栈的作用

weixin_47571898的博客 1119

【stata基础代码大全 】 可独立完成一篇实证

用stata打开,直接替换自己需要的变量就行,小白友好❗️❗️❗️。八、八.中介效应检验:路径分析(三种方法)第二种方法即Sobel-Goodman检验。*(7)Winsor处理,剔除异常值。六、内生性问题解决方法(附具体模型)其三,工具变量:两阶段最小二乘。第三种方法即Bootstrap检验。二、Stata中数据的基本处理。*(5)生成行业、年度虚拟变量。PSM1————近邻匹配。七、调节效应检验:机制分析。*(2)剔除数据中的样本。*(4)给变量添加标签。*(3)生成新的变量。*(6)基本数据匹配。

J_Giser的博客 8025

递归遍历xml文件中的tag,value,desc属性值#3

#递归遍历xml文件中的tag,value,desc属性值#3 def etree(filePath, root): name, suf = os.path.splitext(filePath) # =>文件名,文件后缀 for child in root: if (root.getchildren() is None): break...

@liaogaoyong的博客 1770

Python爬虫实战:利用Requests-HTML与异步技术高效爬取B站视频信息及弹幕数据分析

B站的弹幕,远非简单的评论功能,它是一种独特的、实时互动的社交方式,是观众情感的集体宣泄和共鸣。无论是用于内容创作者优化视频结构,还是用于社会学、传播学的研究,亦或是简单的个人兴趣分析,都具备极高的价值。stop_words = {'的', '了', '是', '我', '你', '他', '她', '它', '在', '有', '不', '吗', '吧', '啊', '这', '那'}本文不仅是代码的堆砌,更注重原理的剖析、反爬策略的应对以及工程化的思考,旨在为读者提供一份紧跟技术前沿的实战指南。

2201_76125261的博客 390

SQL server 2008 对XML 字段的操作

T-Sql操作Xml数据 一、前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时候,可以使用这个XML的

Tlife的专栏 6985

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java 解析标记语言_Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例...

Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例/*** @author LiXuekai on 2020/7/26*/public class XmlTest2 {private static final String XML_INFO = "\n" +"\n" +" 20200715\n" +" 0\n"...

weixin_39576149的博客 255

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python读取并解析xml文件中的各个attribite和各个value值

将属性字典转为列表格式 [{'属性名': '值'}]print(f"节点路径: {item['node_path']}")print(f"文本值: 「{item['data']}」")1. 大数据处理:使用iterparse()替代parse(),边解析边处理。print(f"XML解析错误: {str(e)}")print(f"文件未找到: {xml_file}")• 自动转换为[{"属性名": "值"}, ...]格式列表。"""解析XML文件中的所有节点属性及文本值"""

2401_86127755的博客 378

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php 数组转换为xml数据,已针对数组键值为数字进行处理

代码非原创,有修改。 /**  * 数组转XML类库  *    * @filesource ArrayToXML.php  * @author  gentwolf  * @version 1.0 2013/08/23  *  * 使用说明:  *  echo ArrayToXml::parse($array, 'root');  */   class Arra

Morten 767

Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例

Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例。

请叫我大师兄 3311

SQL对Xml字段的操作

T-Sql操作Xml数据 一、前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时候,可以使用这个XML的

专注程序设计开发 772

XSLT <xsl:value-of> 元素

本文详细解析XSLT中<xsl:value-of>元素的使用方法,该指令用于提取并输出节点文本内容。文章涵盖基础语法、10个实用案例(如属性取值、多节点拼接等)及常见误区对比,特别强调XSLT 2.0新增的separator属性功能。通过对比表区分value-of、copy-of等指令的适用场景,并提供实战示例演示如何将XML书籍数据转换为格式化文本。最后指出value-of相当于JavaScript的innerText操作,适合处理纯文本输出需求。

likuoelie的博客 460

基于dom4j获取、设置xml文件属性值

获取Document对象 /** * 获取Document对象 * @param fileName xml位置 * @return String 值 * @throws Exception */ public Document getXMLDocument(String fileName){ fileName = Constants.CONF_PATH+fileName;

Loser100的博客 2362

.net 获取xml里面的值_Java使用dom4j解析Xml文件

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点pom.xml中需要添加的dom4j的jar包依赖dom4jdom4j1.6.1test.xmljdbc:oracle:thin:@//127.0.0.1:1521/proc_dataproc_userproc_user/pr...

weixin_39623271的博客 83

python如何创建xml文件_如何在Python中打开这个XML文件来创建dataframe?

XML是一个树状结构,而Pandas数据帧是一个二维表状结构。所以这两者之间没有自动转换的方法。您必须了解XML结构并知道如何将其数据映射到二维表。因此,每个XML到数据帧的问题都是不同的。XML有两个数据集,每个数据集包含一系列数据。每个序列都包含许多Obs元素。每个序列都有一个NAME属性,每个Obs都有Obs_STATUS、TIME_PERIOD和Obs_VALUE属性。因此,创建一个包含N...

weixin_39571404的博客 221
上一篇: 数组越界的一点心得
下一篇: MSR初步理解
对象
博客等级 码龄17年 70粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值