实例一:获取指定两个标签之间的数据

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数据的更多相关文章

  1. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  2. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  4. 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&CCMutableDictionary使用与注意!

    本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/694.html ☞ ...

  5. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  6. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  7. java解析xml的几种方式

    java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...

  8. (四)SAX方式解析XML数据

    SAX方式解析XML数据 ​文章来源:http://www.cnblogs.com/smyhvae/p/4044170.html 一.XML和Json数据的引入: 通常情况下,每个需要访问网络的应用程 ...

  9. java解析xml文件并输出

    使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...

随机推荐

  1. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解

    题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定 ...

  2. Strength(HDU6563+2018年吉林站+双指针瞎搞)

    题目链接 传送门 题意 你有\(n\)只怪,每只怪的伤害为\(a_i\),对手有\(m\)只怪,每只怪的伤害为\(b_i\),对手的怪有普通状态和防守状态(普通状态:如果你用攻击力为\(a_i(a_i ...

  3. win10永久激活方法(真正永久激活)

    win10的花费不低,所以很多电脑用户选择搜索激活,但是大部分用的激活工具激活的基本上都是假激活(或许本来就是),kms激活和试用账号临时激活都是有时间限制的,虽然到时都可以继续,但是系统还是明确此激 ...

  4. 使用aliyun的oss服务器上传照片

    1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进入后如图所示. 1.2 OSS基本概念 这里不过多介绍如何在 ...

  5. Python练习——约瑟夫环问题、用类方法描述一个数字时钟

    一.约瑟夫环问题 有15个基督徒和15个非基督徒在海上遇险,为了能让一部分人活下来不得不将其中15个人扔到海里面去,有个人想了个办法就是大家围成一个圈,由某个人开始从1报数,报到9的人就扔到海里面,他 ...

  6. 大数据之路week07--day07 (修改mysql默认编码)

    在Sqoop导入或者导出,我们在查看mysql的时候会出现中文乱码大部分乱码会是?这样的问号,那么该怎么处理呢? 1.打开my.cnf文件  vim /etc/my.cnf 2.找到对应需要修改的地方 ...

  7. 当调用对象中不存的方法、属性时,__getattr__的应用场景

    一.Python中创建类和实例的调用顺序 new(cls) 创建对象前调用,如果类中没定义,会一直向父类找,直到object的 new 方法创建类.cls代表类本身 init(self) 创建类实例后 ...

  8. 36氪新风向 | 三个月估值普涨三倍,你未来的RPA机器人同事正在路上

    http://www.sohu.com/a/320208242_114778 2019 年 4 月,关注 RPA 赛道的投资人 Kevin(化名)就发现,仅仅过了一个春节,自己所在的早期基金已经投不起 ...

  9. docker拷贝宿主与容器中的文件

    从容器里面拷文件到宿主机 语法:docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 例子:容器名为ubuntu,要从容器里面拷贝的文件路为:/usr/local/tom ...

  10. 14.go内置的rate包学习2(有花操作,必看)

    package main import ( "fmt" "golang.org/x/time/rate" "time" ) func mai ...