JAVA XMLConfiguration解决StringXML及多节点

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.HierarchicalConfiguration.Node;
import org.apache.commons.configuration.XMLConfiguration;

public class parseXMDemo {
	
	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(Stirng[] args) {
		String xml = 
				"<csMsgsReq>" +
				"	<csMsgReq xsi:type="cstypeNotify">" +
				"		<authority xsi:type="cstypeAuthorityCommon"/>" +
				"		<nbase xsi:type="cstypeAlarmGeneral">" +
				"			<alarmTime>2014-10-09T17:16:54.687</alarmTime>" +
				"			<TrackLine xsi:type="cstypeTrackLineType" lineLth="24">" +
				"				<point xsi:type="cstypepoint" X="0" Y="0"/>" +
				"				<point xsi:type="cstypepoint" X="1386" Y="472"/>" +
				"			</TrackLine>" +
				"		</nbase>" +
				"	</csMsgReq>" +
				"</csMsgsReq>";
		InputStream in = new ByteArrayInputStream(xml.getBytes());
		XMLConfiguration config = new XMLConfiguration();
		try {
			config.load(in);
			String alarmTime = config.getString("csMsgReq.nbase.alarmTime"); 
			HierarchicalConfiguration lineConfig = (HierarchicalConfiguration)config.subset("csMsgReq.nbase.TrackLine");
			String trackLine = parseMutliLines(lineConfig);
		} catch (ConfigurationException e) {
			e.printStackTrace();
		}
	}
	

}

原文地址:https://www.cnblogs.com/whisht/p/4098851.html