1.导入依赖
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
2.需要解析的xml
<Root>
<Variable VarName="LQT_Level" Address="0" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔液位" IsFiling="1" IsAlarm="1" IsReport="1" AbsoluteAddress="40000" />
<Variable VarName="LQT_InPre" Address="2" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔入口压力" IsFiling="1" IsAlarm="1" IsReport="1" AbsoluteAddress="40002" />
<Variable VarName="LQT_InTemp" Address="4" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔入口温度" IsFiling="1" IsAlarm="1" IsReport="1" AbsoluteAddress="40004" />
<Variable VarName="LQT_OutPre" Address="6" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔出口压力" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40006" />
<Variable VarName="LQT_OutTemp" Address="8" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔出口温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40008" />
<Variable VarName="LQB1_Current" Address="12" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#冷却泵电流" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40012" />
<Variable VarName="LQB1_Fre" Address="14" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#冷却泵频率" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40014" />
<Variable VarName="LQB2_Current" Address="16" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#冷却泵电流" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40016" />
<Variable VarName="LQB2_Fre" Address="18" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#冷却泵频率" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40018" />
<Variable VarName="KYJ1_OutTemp" Address="20" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#空压机回水温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40020" />
<Variable VarName="KYJ2_OutTemp" Address="22" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#空压机回水温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40022" />
<Variable VarName="KYJ3_OutTemp" Address="24" DataType="Float" StoreArea="03 Holding Register(4x)" Note="3#空压机回水温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40024" />
<Variable VarName="CQG1_OutPre" Address="26" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#储气罐出口压力" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40026" />
<Variable VarName="CQG2_OutPre" Address="28" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#储气罐出口压力" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40028" />
<Variable VarName="CQG3_OutPre" Address="30" DataType="Float" StoreArea="03 Holding Register(4x)" Note="3#储气罐出口压力" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40030" />
<Variable VarName="Env_Temp" Address="32" DataType="Float" StoreArea="03 Holding Register(4x)" Note="露点温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40032" />
<Variable VarName="FQG_Temp" Address="34" DataType="Float" StoreArea="03 Holding Register(4x)" Note="分汽缸温度" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40034" />
<Variable VarName="FQG_Pre" Address="36" DataType="Float" StoreArea="03 Holding Register(4x)" Note="分汽缸压力" IsFiling="1" IsAlarm="0" IsReport="1" AbsoluteAddress="40036" />
<Variable VarName="LQT_InPre_H" Address="38" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔回水压力高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40038" />
<Variable VarName="LQT_InTemp_H" Address="40" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔回水温度高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40040" />
<Variable VarName="LQT_OutPre_H" Address="42" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔供水压力高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40042" />
<Variable VarName="LQT_OutTemp_H" Address="44" DataType="Float" StoreArea="03 Holding Register(4x)" Note="冷却塔供水温度高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40044" />
<Variable VarName="LQB1_Fre_H" Address="46" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#冷却泵频率高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40046" />
<Variable VarName="LQB1_Fre_L" Address="48" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#冷却泵频率低限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40048" />
<Variable VarName="LQB2_Fre_H" Address="50" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#冷却泵频率高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40050" />
<Variable VarName="LQB2_Fre_L" Address="52" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#冷却泵频率低限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40052" />
<Variable VarName="KYJ1_Fre_Set" Address="54" DataType="Float" StoreArea="03 Holding Register(4x)" Note="1#空压机频率给定" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40054" />
<Variable VarName="KYJ2_Fre_Set" Address="56" DataType="Float" StoreArea="03 Holding Register(4x)" Note="2#空压机频率给定" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40056" />
<Variable VarName="KYJ3_Fre_Set" Address="58" DataType="Float" StoreArea="03 Holding Register(4x)" Note="3#空压机频率给定" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40058" />
<Variable VarName="FQG_Temp_H" Address="60" DataType="Float" StoreArea="03 Holding Register(4x)" Note="分汽缸温度高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40060" />
<Variable VarName="FQG_Pre_H" Address="62" DataType="Float" StoreArea="03 Holding Register(4x)" Note="分汽缸压力高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40062" />
<Variable VarName="Env_Temp_H" Address="64" DataType="Float" StoreArea="03 Holding Register(4x)" Note="露点温度高限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40064" />
<Variable VarName="Env_Temp_L" Address="66" DataType="Float" StoreArea="03 Holding Register(4x)" Note="露点温度低限" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40066" />
<Variable VarName="LQB1_Start_Ctl" Address="100" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#冷却泵启动" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40100" />
<Variable VarName="LQB1_Stop_Ctl" Address="101" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#冷却泵停止" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40101" />
<Variable VarName="LQB1_Run_State" Address="102" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#冷却泵运行状态" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40102" />
<Variable VarName="LQB2_Start_Ctl" Address="103" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#冷却泵启动" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40103" />
<Variable VarName="LQB2_Stop_Ctl" Address="104" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#冷却泵停止" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40104" />
<Variable VarName="LQB2_Run_State" Address="105" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#冷却泵运行状态" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40105" />
<Variable VarName="KYJ1In_Open_Ctl" Address="106" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#空压机进液阀开启" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40106" />
<Variable VarName="KYJ1In_Close_Ctl" Address="107" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#空压机进液阀关闭" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40107" />
<Variable VarName="KYJ1In_Run_State" Address="108" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="1#空压机进液阀状态" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40108" />
<Variable VarName="KYJ2In_Open_Ctl" Address="109" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#空压机进液阀开启" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40109" />
<Variable VarName="KYJ2In_Close_Ctl" Address="110" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#空压机进液阀关闭" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40110" />
<Variable VarName="KYJ2In_Run_State" Address="111" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="2#空压机进液阀状态" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40111" />
<Variable VarName="KYJ3In_Open_Ctl" Address="112" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="3#空压机进液阀开启" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40112" />
<Variable VarName="KYJ3In_Close_Ctl" Address="113" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="3#空压机进液阀关闭" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40113" />
<Variable VarName="KYJ3In_Run_State" Address="114" DataType="Unsigned" StoreArea="03 Holding Register(4x)" Note="3#空压机进液阀状态" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="40114" />
<Variable VarName="123" Address="1234678" DataType="Float" StoreArea="03 Holding Register(4x)" Note="" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="1274678" />
<Variable VarName="1234" Address="12345" DataType="Float" StoreArea="03 Holding Register(4x)" Note="" IsFiling="0" IsAlarm="0" IsReport="0" AbsoluteAddress="52345" />
</Root>
3.解析测试代码
@RequestMapping(value = "/test02", method = RequestMethod.GET)
@ResponseBody
public void demo02() throws IOException, JDOMException {
//1.创建SAXBuilder对象
SAXBuilder saxBuilder = new SAXBuilder();
//2.创建输入流
InputStream is = new FileInputStream(new File("D:\\project\\ideaProject\\demo05\\src\\main\\resources\\static\\Variable_Modbus.xml"));
//3.将输入流加载到build中
Document document = saxBuilder.build(is);
//4.获取根节点\
Element rootElement = document.getRootElement();
//5.获取子节点
List<Element> children = rootElement.getChildren();
for (Element child : children) {
System.out.println("通过Variable获取属性值:"+child.getName());
List<Attribute> attributes = child.getAttributes();
//打印属性
System.out.println("======获取子节点-start======");
for (Attribute attr : attributes) {
System.out.println(attr.getName()+":"+attr.getValue());
}
System.out.println("======获取子节点-end======");
//List<Element> childrenList = child.getChildren();
// for (Element o : childrenList) {
// System.out.println("节点名:"+o.getName()+"---"+"节点值:"+o.getValue());
// }
}
// return jsonObject;
}