没有闭合(结束)标签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

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三