好记性不如烂笔头60-利用XMLConfiguration解析XML多节点
发布时间:2020-12-16 09:15:14 所属栏目:百科 来源:网络整理
导读:利用XMLConfiguration解析XML多节点. 1、 用XMLConfiguration解析XML多节点的源代码 package test.ffm83.commons.configuration; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.List; import org.apache.commons.conf
利用XMLConfiguration解析XML多节点. 1、 用XMLConfiguration解析XML多节点的源代码package test.ffm83.commons.configuration;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.List;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.HierarchicalConfiguration.Node;
import org.apache.commons.configuration.XMLConfiguration;
/** * 简单示例,解析XML多个同类型子节点属性,比如输出XY坐标 * * @author 范芳铭 */
public class EasyParseNodesXML {
//解析子节点
private static String parseMutliLines(HierarchicalConfiguration lineConfig) {
String value = "";
Node root = lineConfig.getRoot();
List children = root.getChildren();
int count = 0;
for (int i = 0; i < children.size(); i++) {
Node child = (Node) children.get(i);
if ("point".equals(child.getName())) {
count++;
}
}
for (int i = 0; i < count; i++) {
value += lineConfig.getString("point(" + i + ")[@X]");
value += ",";
value += lineConfig.getString("point(" + i + ")[@Y]");
value += ":";
}
return value;
}
public static void main(String[] args) throws Exception {
String xml = "<csMsgReqs>"
+ " <csMsgReq xsi:type="cstypeNotify">"
+ " <authority xsi:type="cstypeAuthorityCommon"/>"
+ " <nbase xsi:type="cstypeAlarmGeneral">"
+ " <alarmTime>2014-03-21 16:16:26.682</alarmTime>"
+ " <TrackLine xsi:type="cstypeTrackLineType" lineLth="18">"
+ " <point xsi:type="cstypepoint" X="1211" Y="351"/>"
+ " <point xsi:type="cstypepoint" X="1386" Y="472"/>"
+ " </TrackLine>" + " </nbase>"
+ " </csMsgReq>" + "</csMsgReqs>";
InputStream in = new ByteArrayInputStream(xml.getBytes());
XMLConfiguration config = new XMLConfiguration();
try {
config.load(in);
} catch (Exception e) {
e.printStackTrace();
}
String alarmTime = config.getString("csMsgReq.nbase.alarmTime");
//将子节点作为参数传入
HierarchicalConfiguration lineConfig = (HierarchicalConfiguration) config
.subset("csMsgReq.nbase.TrackLine");
String trackLine = parseMutliLines(lineConfig);
System.out.println("alarmTime:" + alarmTime);
System.out.println("trackLine:" + trackLine);
}
}
2、 运行程序alarmTime:2014-03-21 16:16:26.682 trackLine:1211,351:1386,472: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |