没有闭合(结束)标签XML文件的解析

2023-12-01 23:18

本文主要是介绍没有闭合(结束)标签XML文件的解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先上XML文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<RESULT_INFO><PATIENT><origin value="XX科技公司" /><id value="1234568" /><name value="李四" /><sex value="男" /><age value="20" /><exmatime value="2018-01-26 18:26:37" /></PATIENT><DATAINFO><samplerate value="500" /><baseline value="32768" /><advalue value="262" /><channels value="9" /><channelbyte value="4" /><analysechannel value="6" /></DATAINFO><EXAM_RESULT><hr value="0" /><p_time value="0" /><pr_interval value="0" /><qrs_time value="0" /><qt_interval value="0" /><qtc_interval value="0" /><p_axis value="0.0" /><qrs_axis value="0.0" /><t_axis value="0.0" /><qrs_t value="0.0" /><sys_conclusion value="心率正常" /><minnsotCode value="157,152,136,139,158,139" /></EXAM_RESULT><print_time value="2018-01-26 18:14:33" />
</RESULT_INFO>

该XML文件与平常所见XML有所不同,我们常见的XML文件是这样的:

<?xml version="1.0" encoding="utf-8"?>
<ROOT>
<VERSION>1.0</VERSION>
<USER>5</USER>
<TYPE>SPO2</TYPE>
<SOURCE>IOS</SOURCE>
<content>
<ITEM>
<SPO2>97</SPO2>
<PR>70</PR>
<PI>48</PI>
<TIME>2017-01-06 10:49:10</TIME>
</ITEM>
</content>
</ROOT>

那么非闭合标签的XML文件怎样读取,才能拿到子节点如minnsotCode 的属性值呢,刚开始我使用的是DOM解析,大致是这样,详细代码我就不贴出来了:

  DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory1.newDocumentBuilder();Document doc = builder.parse(“demo.xml”);NodeList Item = doc.getElementsByTagName("EXAM_RESULT");for (int i = 0; i < Item.getLength(); i++) {String minnsotCode =doc.getElementsByTagName("minnsotCode ").item(i).getFirstChild().getNodeValue();}

运行后报空指针异常
后使用dom4J解析,终于拿到值。

import java.io.File;  
import java.util.Iterator;
import java.util.List;  
import org.dom4j.Attribute;  
import org.dom4j.Document;  
import org.dom4j.Element;  
import org.dom4j.Node;
import org.dom4j.io.SAXReader; public static void main(final String[] args) {  final SAXParserHandler test = new SAXParserHandler();  try {  ECG12 ecg12=test.GetECGData("E:\\test\\20170828.xml");System.out.println(ecg12.getHeartRate());System.out.println(ecg12.getECGResult());System.out.println(ecg12.getMinnsotCode ());} catch (final Exception e) {  e.printStackTrace();  }  }  public static ECG12 getECG12Test(final Element node){ECG12 ecg12=new ECG12();getNodes(node,ecg12);return ecg12;}public ECG12 GetECGData(String path) throws Exception {  final SAXReader sax = new SAXReader();final File xmlFile = new File(path);  //"E:\\test\\20170828.xml"final Document document = sax.read(xmlFile);final Element root = document.getRootElement();ECG12 ecg12 = getECG12Test(root);return ecg12;}  public static void getNodes(final Element node,ECG12 ecg12) {  final List<Attribute> listAttr = node.attributes();for (final Attribute attr : listAttr) {if(node.getName().equalsIgnoreCase("hr")){ecg12.setHeartRate(Integer.parseInt(attr.getValue()));} if(node.getName().equalsIgnoreCase("sys_conclusion")){String ecgResult=attr.getValue();ecg12.setECGResult(ecgResult);}else if(node.getName().equalsIgnoreCase("minnsotcode")){String minnsotcode=attr.getValue();ecg12.setECGData(minnsotcode);}}  final List<Element> listElement = node.elements(); for (final Element e : listElement){           getNodes(e,ecg12);}}  ```以上ECG12为要取值的实体类,最终目的拿到各个属性值赋值,然后在存进数据库,本人才疏学浅,如有不足之处,欢迎指正,同时如果有更好的解决办法,也欢迎提出。

这篇关于没有闭合(结束)标签XML文件的解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443077

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

OWASP十大安全漏洞解析

OWASP(开放式Web应用程序安全项目)发布的“十大安全漏洞”列表是Web应用程序安全领域的权威指南,它总结了Web应用程序中最常见、最危险的安全隐患。以下是对OWASP十大安全漏洞的详细解析: 1. 注入漏洞(Injection) 描述:攻击者通过在应用程序的输入数据中插入恶意代码,从而控制应用程序的行为。常见的注入类型包括SQL注入、OS命令注入、LDAP注入等。 影响:可能导致数据泄

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

intellij idea generatorConfig.xml

generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-ge