使用dom4j遍历简单xml字符串

案例需求

遍历以下xml串,去掉节点< ITEM>中属性val为空的节点

<?xml version="1.0"?>
<MESSAGE>
    <DATASET name="1XXXXXXXXX">
        <DATA>
            <ITEM key="RRE" val="1290039"/>
            <ITEM key="FFC" val="ACCOUNT"/>
            <ITEM key="MSGID"/>
            <ITEM key="MSGTYPE" val="3"/>
        </DATA>
    </DATASET>
    <DATASET name="2XXXXXXXXXX">
        <DATA>
            <ITEM key="USER_ACCOUNT" val="12344567"/>
            <ITEM key="USER_SDRTGID"/>
        </DATA>
    </DATASET>
</MESSAGE>


逻辑处理:
1、使用dom4j构建 Document 对象,找到根节点root

    public static String  filterValXmlStr(String xmlStr) throws Exception{
        Document document = DocumentHelper.parseText(xmlStr);
        Element root = document.getRootElement();
        readNote(root);
        return document.asXML();
    }

2、递归遍历节,找到底层item节点,判断属性val是否有值,如果存在val为空,则在整个document 对象中移除该子节点

  public static void readNote(Element node) {
        for (Iterator it = node.elementIterator(); it.hasNext(); ) {
            Element item = (Element) it.next();
            Iterator it2 = item.elementIterator();
            if (it2.hasNext()) {
                System.out.println("...存在子节点,继续遍历");
                readNote(item);
            } else {
                System.out.println("已经到达最底层节点..开始解析底层节点属性是否有val值");
                if (item.attribute("val") == null) {
                    System.out.println("<=val属性值不存在,移除节点");
                    node.remove(item);
                } else {
                    System.out.println("<=val属性值存在,跳过");
                }
            }
        }
    }

3、将document对象转换成xml字符串

document.asXML();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值