使用JDOM从文件解析SOAP响应

时间:2012-12-21 00:12:08

标签: 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?

1 个答案:

答案 0 :(得分:1)

JDOM的getChildren方法记录为此(强调我的):

  

这将返回一个List,其中包含直接嵌套在此元素中的所有子元素(一个深层),作为Element对象。

查看原始here

您对getRootElement的来电将您带到soap:Envelope,其中没有任何config子节点。

要解决这个问题,您可以:

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