前提
由于业务上需要向一个地址发送请求,然后解析响应体为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
海带有话说:
海带只是个新新手,解决方法千千万,以上是我学到的一种方法处理,如有问题,欢迎👏大家指出,我们一起相互学习、共同进步!