加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

好记性不如烂笔头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:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读