[JAVA] 解析从请求地址返回的xml类型数据

前提

由于业务上需要向一个地址发送请求,然后解析响应体为xml类型的数据,并获取相应内容进行业务操作,在网上找了N篇帖子,有丢丢难以解决本人需求哇,现在✅,记录一下🌻:

实现

先附上一段xml格式示例代码,ABC分别代表三个节点(后面我分别用ABC表示它们):

A为👴根节点,BC是A的👨子节点,C又是B的👦子节点

<AAA>
  <BB>
    <C>hello</C>
  </BB>
</AAA>

测试需求

获取<C></C>节点中的值hello

测试代码

这里先给出一个我自己的测试代码及效果⬇️

//引入Document依赖
import org.dom4j.Document;

    public static void main(String[] args) {
        //测试xml
        String xmlResult = "<AAA>\n" +
                            "  <BB>\n" +
                            "    <C>hello</C>\n" +
                            "  </BB>\n" +
                            "</AAA>";
        //将xmlResult字符串转换成以document为根节点的DOM树
        //此处parseText有异常,可以try-catch
        Document document = null;
        try {
            document = DocumentHelper.parseText(xmlResult);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //获取根节点A的下一个子节点B
        Element B_element = document.getRootElement().element("BB");
        //可判断节点是否存在,存在再去获取节点内容
        if (B_element != null) {
            //根据B节点再获取其子节点C
            Element C_element = B_element.element("C");
            //再次判断是否存在
            if (C_element != null) {
                String result = C_element.getText();
                System.out.println(result);
            }
        } else {
            throw new RuntimeException("获取失败!");
        }
    }

测试结果

测试需求已完成✅ 成功获取到“hello”~

步骤

1.将xml字符串转换成以document为根节点的DOM树

Document document = DocumentHelper.parseText(xmlResult);                                                            

2.转成树之后,xml的标签名则会变成DOM树格式,以根节点、子节点的形式存在

document.getRootElement():获取根节点                                                  

3.根据根节点,在方法后添加.element获取当前根节点的下一个节点,再想获取子节点的下一个节点,也是这个做法⬇️

document.getRootElement.element(“节点名”):获取根节点的下一个节点

element.getText():获取节点内的值                                        ​​​​​​​                                                                                      

//根据根节点A获取其子节点B

Element B_element = document.getRootElement().element("BB");                                                                                                                                                                                  
//根据B节点再获取其子节点C

Element C_element = B_element.element("C");                                                                                                                                                                                 
//获取子节点C的内容result

String result = C_element.getText();ment("C");​​​​​​​

4.此时测试需求就完成了——>成功获取<C></C>节点中的值hello

海带有话说:

海带只是个新新手,解决方法千千万,以上是我学到的一种方法处理,如有问题,欢迎👏大家指出,我们一起相互学习、共同进步!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值