Springboot使用DOM4J方式解析XML

Maven

 <!-- DOM4J-->
 <dependency>
     <groupId>dom4j</groupId>
     <artifactId>dom4j</artifactId>
     <version>1.6.1</version>
</dependency>

DOM4J方法

public void dom4J(String xml) throws DocumentException {
        Document doc = null;
        try {
            doc = DocumentHelper.parseText(xml); // 将字符串转为XML
            Element rootElt = doc.getRootElement(); // 获取根节点
            System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
            Iterator iter = rootElt.elementIterator("Header"); // 获取根节点下的子节点Header
            // 遍历Header节点
            while (iter.hasNext()) {
                Element recordEle = (Element) iter.next();
                String RequestId = recordEle.elementTextTrim("RequestId"); // 拿到Header节点下的子节点RequestId值
            }
            Iterator iters2 = rootElt.elementIterator("Body"); ///获取根节点下的子节点body
            // 遍历body节点
            while (iters2.hasNext()) {
                Element recordEless = (Element) iters2.next();
                String ExchangeData = recordEless.elementTextTrim("ExchangeData"); // 拿到body节点下的子节点result值
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

另外提供一个不是xml格式但以键值对方式出现的取值方法

    public static String findMsg(String forArgXml, String name)throws Exception {
        String a = "<" + name + ">";
        String c = "</" + name + ">";
        int b = forArgXml.indexOf(a);
        int e = forArgXml.indexOf(c);
        int d = name.length() + 2;
        if (forArgXml.length() > e && e > b + d) {
            return forArgXml.substring(b + d, e).trim();
        } else {
            return null;
        }
    }
    
	public static void main(String[] args) throws Exception {
		String data = "<name>张三</name><age>55</age>";
		// 打印结果为张三
		System.out.println(findMsg(data,"name"));
	}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值