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 ...
随机推荐
- Synchronized偏向锁和轻量级锁的升级
原文:https://blog.csdn.net/tongdanping/article/details/79647337 锁的优化1.锁升级锁的4中状态:无锁状态.偏向锁状态.轻量级锁状态.重量级锁 ...
- python+BeautifulSoup+多进程爬取糗事百科图片
用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...
- 2019年牛客多校第一场 H题XOR 线性基
题目链接 传送门 题意 求\(n\)个数中子集内所有数异或为\(0\)的子集大小之和. 思路 对于子集大小我们不好维护,因此我们可以转换思路变成求每个数的贡献. 首先我们将所有数的线性基的基底\(b\ ...
- 摘:JAVA JXL API的详细使用
转自:http://www.cr173.com/html/10377_1.html 1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式.作为 ...
- js Date对象和数字对象
<script type="text/javascript"> alert(new Date.toLocaleString()); </script> 以本 ...
- PCA: PCA的具体实现过程
数据预处理:mean normalization & feature scaling 先进行均值归一化(mean normalization),计算出每个特征的均值(uj),然后用xj-uj ...
- pandas 筛选
t={ , , np.nan, , np.nan, ], "city": ["BeiJing", "ShangHai", "Gua ...
- Git学习笔记--实践(三)
文中红色的文字(标为:## 插曲)是在Git学习/实践过程中,我个人遇到的一些问题,每个“## 插曲”之后,都有相应的解决方案. 一.创建版本库 版本库又名仓库,英文名repository,可简单的理 ...
- Cocos2d-x学习小结 配置篇
Cocos2d-x学习小结 配置篇 学习工具:Cocos2d-x用户手册,<Cocos2d-x游戏开发之旅> 首先官网下载cocos2d-x源码,安装vs2019.如果没有安装python ...
- 微信小程序——<scroll-view>滚动到最底部
最近在做个直播间,有个这样的需要,就是进入到页面,<scroll-view>需要滚动到最底部,并且发送消息之后自动的滚动到底部. 开始想着计算里面内容的高度,然后通过设置 scroll-t ...