java - 使用 JDOM 解析文件中的 SOAP 响应

标签 java xml soap jdom

我正在尝试解析文件中的 SOAP 响应。 这是out.xml

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <response xmlns="http://tempuri.org/">
    <result>
    <config>...</config>
    <config>...</config>
    <config>...</config>
    </result>
    </response>
    </soap:Body>
    </soap:Envelope>

这是使用 jdom 的代码:

SAXBuilder builder = new SAXBuilder();
try {

   Document document = builder.build( new File("out.xml"));
   Element root = document.getRootElement();
   Namespace ns = Namespace.getNamespace("http://tempuri.org/");
   List r = root.getChildren("config", ns);
   System.out.println(r.size());

}

为什么输出0?

最佳答案

JDOM 的 getChildren 方法记录如下(强调我的):

This returns a List of all the child elements nested directly (one level deep) within this element, as Element objects.

查看原文here .

getRootElement 的调用会将您带到 soap:Envelope,它没有任何 config 子节点。

要解决此问题,您可以:

  1. 多次调用 getChildren 以浏览 soap:Bodyresponseresult 元素
  2. 调用getDescendants来获取一个遍历整个层次结构而不仅仅是一级的迭代器

关于java - 使用 JDOM 解析文件中的 SOAP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982505/

相关文章:

XML 模式限制。 "x.x"的模式,类似于表示版本号的属性值

php - 在 plesk api 中,如果我不知道数据库 ID,如何将用户添加到数据库

java - 用于在 Java 中构建 SOAP Web 服务客户端的推荐库

java - 如何接收通过 TCP 套接字发送的相同消息?

java - 使用 maven 生成一个包含所有依赖项的 xml 文件

java - 是否可以在不使用 "new"的情况下声明变量,如 "String"类

java - JAXB 可以将 ArrayList 输出为逗号分隔值吗?

java - Android Mantis客户端 "Could not find class"错误

java - WSDL 警告 : Defective soapbind:fault element. 是什么意思?

java - 我想在 JLabel(s) 之间创建空间并将 JButtons 对齐到同一行