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

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三