Java 解析XML数据
实例一:获取指定两个标签之间的数据
XML数据格式:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetAlarmTypeResponse xmlns="YKITSJLW">
<GetAlarmTypeResult>报警,断电,调校,超量程,分站故障,不巡检,暂停,传感器故障</GetAlarmTypeResult>
</GetAlarmTypeResponse>
</soap:Body>
</soap:Envelope>
目的:获取<GetAlarmTypeResult>和</GetAlarmTypeResult> 之间的数据
方法一:
package yk.bigdata.dl.ias.fileParse; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import yk.bigdata.dl.ias.bean.BeanAlarmType; import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List; /**
* @Author: cjj
* @Date: Created in 11:09 2019/7/9
* @Description:
*/
public class AlarmTypeXmlFileParse {
public static dom4jXml(String interfaceData) throws Exception{
List<Element> elementList = null; SAXReader sr = new SAXReader();
Document document = sr.read(new ByteArrayInputStream(interfaceData.getBytes())); // 传入需要解析的数据
Element root = document.getRootElement();
elementList = root.elements();
for (Element e : elementList) {
// 解析标签下一级标签
Element e1 = e.element("GetAlarmTypeResponse");
List<Element> elementList1 = e1.elements();
for (Element el:elementList1){
System.out.println(e1.elementText("GetAlarmTypeResult"));
}
}
}
}
方法二:
// 获取指定标签的index
int indexbegin = xmlStr.indexOf("<GetAlarmTypeResult>");
int indexend = xmlStr.indexOf("</GetAlarmTypeResult>");
System.out.println("<TrmSeqNum>的位置===" + indexbegin);
System.out.println("</TrmSeqNum>的位置===" + indexend);
// 截取指定index之间的数据
String jsonStr = xmlStr.substring(indexbegin + 25, indexend);
System.out.println(jsonStr);
实例二:获取指定标签下的所有子标签的值
XML数据格式:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetTagValueJsonResponse xmlns="YKITSJLW">
<GetTagValueJsonResult>
<Table diffgr:id="Table1" msdata:rowOrder="0">
<AlarmState>调校</AlarmState>
<TagKey>YK03112034112</TagKey>
<TagName>1611运顺回风流CO</TagName>
<Value>0</Value>
<AlarmTime>2019-06-01T13:44:35.477+08:00</AlarmTime>
<AlarmRtnTime>2019-06-02T16:48:05.333+08:00</AlarmRtnTime>
<TimeInState>97410</TimeInState>
<SysGroup>安全监测监控系统</SysGroup>
<TagType>一氧化碳</TagType>
<EngUnit>ppm</EngUnit>
<DataType>1</DataType>
<HiAlarmLimit>24</HiAlarmLimit>
<LoAlarmLimit>0</LoAlarmLimit>
<UnitName>小屯煤矿</UnitName>
</Table> <Table diffgr:id="Table2" msdata:rowOrder="1">
<AlarmState>调校</AlarmState>
<TagKey>YK03113022114</TagKey>
<TagName>1811运顺管道红外甲烷</TagName>
<Value>2.912</Value>
<AlarmTime>2019-06-01T01:39:36.41+08:00</AlarmTime>
<AlarmRtnTime>2019-06-01T03:07:36.377+08:00</AlarmRtnTime>
<TimeInState>5280</TimeInState>
<SysGroup>安全监测监控系统</SysGroup>
<TagType>高浓度甲烷</TagType>
<EngUnit>%CH4</EngUnit>
<DataType>1</DataType>
<HiAlarmLimit>0</HiAlarmLimit>
<LoAlarmLimit>0</LoAlarmLimit>
<UnitName>五轮山煤矿</UnitName>
</Table>
</GetTagValueJsonResult>
</GetTagValueJsonResponse>
</soap:Body>
</soap:Envelope>
目的:获取<Table>标签下的所有子标签后面跟的值,创建一个对象,用对象来接收取出来的值。
bean代码:
package yk.bigdata.dl.ias.bean; import static yk.bigdata.dl.ias.getData.GetTime.getNowTime;
/**
* Created with IntelliJ IDEA.
* User: 吹静静
* Date: 2019/4/7
* Time: 9:31
* Description: bean
*/
/**
* <AlarmState>调校</AlarmState>
* <TagKey>YK03112034112</TagKey>
* <TagName>1611运顺回风流CO</TagName>
* <Value>0</Value>
* <AlarmTime>2019-06-01T13:44:35.477+08:00</AlarmTime>
* <AlarmRtnTime>2019-06-02T16:48:05.333+08:00</AlarmRtnTime>
* <TimeInState>97410</TimeInState>
* <SysGroup>安全监测监控系统</SysGroup>
* <TagType>一氧化碳</TagType>
* <EngUnit>ppm</EngUnit>
* <DataType>1</DataType>
* <HiAlarmLimit>24</HiAlarmLimit>
* <LoAlarmLimit>0</LoAlarmLimit>
* <UnitName>小屯煤矿</UnitName>
*/
public class BeanAlarmHis { private String AlarmState;
private String TagKey;
private String TagName;
private String Value;
private String AlarmTime;
private String AlarmRtnTime;
private String TimeInState;
private String SysGroup;
private String TagType;
private String EngUnit;
private String DataType;
private String HiAlarmLimit;
private String LoAlarmLimit;
private String UnitName;
private String KBN0 = "0"; // 流式处理的标志
private String KBN1 = "1"; // 离线处理的标志
private String CREATE_TIME; public String getAlarmState() {
return AlarmState;
} public void setAlarmState(String alarmState) {
AlarmState = alarmState;
} public String getTagKey() {
return TagKey;
} public void setTagKey(String tagKey) {
TagKey = tagKey;
} public String getTagName() {
return TagName;
} public void setTagName(String tagName) {
TagName = tagName;
} public String getValue() {
return Value;
} public void setValue(String value) {
Value = value;
} public String getAlarmTime() {
return AlarmTime;
} public void setAlarmTime(String alarmTime) {
AlarmTime = alarmTime;
} public String getAlarmRtnTime() {
return AlarmRtnTime;
} public void setAlarmRtnTime(String alarmRtnTime) {
AlarmRtnTime = alarmRtnTime;
} public String getTimeInState() {
return TimeInState;
} public void setTimeInState(String timeInState) {
TimeInState = timeInState;
} public String getSysGroup() {
return SysGroup;
} public void setSysGroup(String sysGroup) {
SysGroup = sysGroup;
} public String getTagType() {
return TagType;
} public void setTagType(String tagType) {
TagType = tagType;
} public String getEngUnit() {
return EngUnit;
} public void setEngUnit(String engUnit) {
EngUnit = engUnit;
} public String getDataType() {
return DataType;
} public void setDataType(String dataType) {
DataType = dataType;
} public String getHiAlarmLimit() {
return HiAlarmLimit;
} public void setHiAlarmLimit(String hiAlarmLimit) {
HiAlarmLimit = hiAlarmLimit;
} public String getLoAlarmLimit() {
return LoAlarmLimit;
} public void setLoAlarmLimit(String loAlarmLimit) {
LoAlarmLimit = loAlarmLimit;
} public String getUnitName() {
return UnitName;
} public void setUnitName(String unitName) {
UnitName = unitName;
} public String getKBN0() {
KBN0 = "0";
return KBN0;
} public String getKBN1() {
KBN1 = "1";
return KBN1;
} public String getCREATE_TIME() {
CREATE_TIME = getNowTime();
return CREATE_TIME;
} @Override
public String toString() { return "BeanAlarmHis{" +
"AlarmState='" + AlarmState + '\'' +
", TagKey='" + TagKey + '\'' +
", TagName='" + TagName + '\'' +
", Value='" + Value + '\'' +
", AlarmTime='" + AlarmTime + '\'' +
", AlarmRtnTime='" + AlarmRtnTime + '\'' +
", TimeInState='" + TimeInState + '\'' +
", SysGroup='" + SysGroup + '\'' +
", TagType='" + TagType + '\'' +
", EngUnit='" + EngUnit + '\'' +
", DataType='" + DataType + '\'' +
", HiAlarmLimit='" + HiAlarmLimit + '\'' +
", LoAlarmLimit='" + LoAlarmLimit + '\'' +
", UnitName='" + UnitName + '\'' +
'}';
}
}
解析代码:
package yk.bigdata.dl.ias.fileParse; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import yk.bigdata.dl.ias.bean.BeanAlarmHis; import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List; import static yk.bigdata.dl.ias.getData.GetTime.timeParse;
/**
* Created with IntelliJ IDEA.
* User: 吹静静
* Date: 2019/7/3
* Time: 9:31
* Description: 解析GetAlarmHis数据
*/
public class AlarmHisXmlFileParse { public static List<BeanAlarmHis> dom4jXml(String interfaceData) throws Exception{
List<Element> elementList = null;
List<BeanAlarmHis> beanAlarmHisList = null; try {
SAXReader sr = new SAXReader();
Document document = sr.read(new ByteArrayInputStream(interfaceData.getBytes())); Element root = document.getRootElement();
elementList = root.elements();
beanAlarmHisList = new ArrayList();
} catch (DocumentException e) {
e.printStackTrace();
} for (Element e : elementList) {
// 解析标签下一级标签
Element e1 = e.element("GetTagValueJsonResponse");
Element e2 = e1.element("GetTagValueJsonResult");
List<Element> elementList1 = e2.elements();
for (Element el:elementList1){
BeanAlarmHis beanAlarmHis = new BeanAlarmHis();
beanAlarmHis.setAlarmState(el.elementText("AlarmState"));
beanAlarmHis.setTagKey(el.elementText("TagKey"));
beanAlarmHis.setTagName(el.elementText("TagName"));
beanAlarmHis.setValue(el.elementText("Value"));
beanAlarmHis.setAlarmTime(timeParse(el.elementText("AlarmTime"))); // 对时间格式进行转换
beanAlarmHis.setAlarmRtnTime(timeParse(el.elementText("AlarmRtnTime"))); // 对时间格式进行转换
beanAlarmHis.setTimeInState(el.elementText("TimeInState"));
beanAlarmHis.setSysGroup(el.elementText("SysGroup"));
beanAlarmHis.setTagType(el.elementText("TagType"));
beanAlarmHis.setEngUnit(el.elementText("EngUnit"));
beanAlarmHis.setDataType(el.elementText("DataType"));
beanAlarmHis.setHiAlarmLimit(el.elementText("HiAlarmLimit"));
beanAlarmHis.setLoAlarmLimit(el.elementText("LoAlarmLimit"));
beanAlarmHis.setUnitName(el.elementText("UnitName"));
beanAlarmHisList.add(beanAlarmHis);
}
}
return beanAlarmHisList;
}
}
Java 解析XML数据的更多相关文章
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&CCMutableDictionary使用与注意!
本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/694.html ☞ ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- 【Java】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- java解析xml的几种方式
java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...
- (四)SAX方式解析XML数据
SAX方式解析XML数据 文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 一.XML和Json数据的引入: 通常情况下,每个需要访问网络的应用程 ...
- java解析xml文件并输出
使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...
随机推荐
- HTML&CSS基础-html的图片标签
HTML&CSS基础-html的图片标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如下图所示,准备一张图片,存放路径和html文件在同一目录 二.HTML源代码 ...
- selenium常用的API(七)判断元素是否可见
web页面不可见的元素虽不在页面上显示,但是存在于DOM树中,这些元素webdriver也能找到. element.is_displayed()方法可以判断元素是否在页面上显示,如果显示返回True, ...
- Alpha冲刺(8/10)——追光的人
1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...
- K-means:如何选择K(cluster的数目)
目前决定cluster数目的常用方法是手动地决定cluster的数目 哪个K是正确的? 上图中的数据集,我们可以说它有4个clusters,也可以说它有2个clusters,但哪个是正确答案呢?其实这 ...
- SignalR入门二、使用 SignalR 2 实现服务器广播
一.概述 这篇教程通过实现一个股票报价的小程序来讲解如何使用SignalR进行服务器端的推送,服务器会模拟股票价格的波动,并把最新的股票价格推送给所有连接的客户端,最终的运行效果如下图所示. 教程:使 ...
- [转]windows10下安装与激活rational rose 2003
Rational Rose2003安装+激活教程(Win10)(另附安装包+激活软件) 原文链接:https://blog.csdn.net/qq_38388811/article/details/8 ...
- Haskell语言学习笔记(95)Semiring
semirings 模块 semirings 模块需要安装 $ cabal install semirings Installed semirings-0.2.0.1 Prelude> :m + ...
- Cocos2d-x学习小结 开始篇
Cocos2d-x学习小结 开始篇 想要学习Cocos2d-x,是因为在高中物理课上找不到某些物理定律的证明,例如欧姆定律. 为此,我翻阅了稍高等级的物理教材,其中关于欧姆定律\(R=\frac{U} ...
- 关于dword ptr 指令
dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345 ...
- 使用git_stats 统计分析git 仓库代码&& 集成webhook
前几天写过一个使用gitstats 统计分析代码的,但是那个因为开发的问题,对于直接和容器集成是有问题的,统计需要进入容器执行 命令,对于自动构建的还不是很方便,所以使用了git_stats 项目 ...