利用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: