我想使用 getChildText() 从几层深度的节点获取文本。文件中有两个命名空间。下面的语法不起作用,并将 textToGet 设置为 null。
String textToGet = root.getChildText("ns1:Customer/ns1:Address/ns1:Street/ns2:Streetname");
我知道有一种替代方法,首先获取子元素,然后获取其文本,但我想使用单行代码。
此外,最好不要链接 getChild(),因为某些元素不能保证位于文件中。
最佳答案
你不可能把它变成一句俏话......
考虑使用 XPaths...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 表达式实际上返回一个元素...您应该将“/text()”添加到 XPath 的末尾,或者将 textToGet 更改为 String(以及过滤器)。
罗尔夫
关于java - 当 XML 中有多个命名空间时,如何 getChildText() 具有命名空间的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844836/