好记性不如烂笔头60-利用XMLConfiguration解析XML多节点

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

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念