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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Spring MVC使用视图解析的问题解读

《SpringMVC使用视图解析的问题解读》:本文主要介绍SpringMVC使用视图解析的问题解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC使用视图解析1. 会使用视图解析的情况2. 不会使用视图解析的情况总结Spring MVC使用视图

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p

Java实现XML与JSON的互相转换详解

《Java实现XML与JSON的互相转换详解》这篇文章主要为大家详细介绍了如何使用Java实现XML与JSON的互相转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. XML转jsON1.1 代码目的1.2 代码实现2. JSON转XML3. JSON转XML并输出成指定的

利用Python和C++解析gltf文件的示例详解

《利用Python和C++解析gltf文件的示例详解》gltf,全称是GLTransmissionFormat,是一种开放的3D文件格式,Python和C++是两个非常强大的工具,下面我们就来看看如何... 目录什么是gltf文件选择语言的原因安装必要的库解析gltf文件的步骤1. 读取gltf文件2. 提

Java中的runnable 和 callable 区别解析

《Java中的runnable和callable区别解析》Runnable接口用于定义不需要返回结果的任务,而Callable接口可以返回结果并抛出异常,通常与Future结合使用,Runnab... 目录1. Runnable接口1.1 Runnable的定义1.2 Runnable的特点1.3 使用Ru

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente