当XML中有多个名称空间时,如何使用名称空间的getChildText()?

时间:2012-10-11 17:04:19

标签: java xml xpath jdom

我想使用getChildText()从几个级别的节点获取文本。文件中有两个名称空间。以下语法不起作用,并将 textToGet 设置为 null

 String textToGet = root.getChildText("ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname");

我知道有一种方法可以先获得Child Element,然后再使用Text,但我想使用单行。

此外,宁愿不链接getChild(),因为某些元素不能保证在文件中。

1 个答案:

答案 0 :(得分:1)

你无法将其作为单行......

考虑使用XPath .... JDOM 2.x应该有帮助:

XPathExpression<String> xpe = XPathFactory.instance().compile(
    Filters.fstring(), "ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname",
    null, namespace_ns1, namespace_ns2);
String textToGet = xpe.evaluateFirst(root);

(textToGet可能为null)

编辑,上面的XPath表达式实际上返回一个元素......你应该在XPath的末尾添加“/ text()”,或者将textToGet改为String(以及过滤器)。

罗尔夫