我正在尝试解析文件中的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?
答案 0 :(得分:1)
JDOM的getChildren
方法记录为此(强调我的):
这将返回一个List,其中包含直接嵌套在此元素中的所有子元素(一个深层),作为Element对象。
查看原始here。
您对getRootElement
的来电将您带到soap:Envelope
,其中没有任何config
子节点。
要解决这个问题,您可以:
getChildren
以浏览soap:Body
,response
和result
元素getDescendants
以获取执行遍历整个层次结构而不只是一个级别的迭代器