java只匹配命名空间中的XML节点,而不知道NS前缀
假设我有一个UPnP SOAP响应,如下所示:
<?xml version="1.0"?>
<m:head xmlns:m="dont_care_about_any_node_in_this_namespace">
<m:body xmlns:u="urn:schemas-upnp-org:service:WANPPPConnection:1">
<u:SomeFunctionResponse>
<u:OutParamName>Some Text</u:OutParamName>
</u:SomeFunctionResponse>
</m:body>
</m:head>
我想选择具有u
名称空间前缀的所有节点,但是:
u
命名空间中的节点名称可能不同李>- 我不知道名称空间前缀是
u
提前的,它可以是任何东西李> - 我只知道我用来调用操作的服务,在本例中是
urn:schemas-upnp-org:service:WANPPPConnection:1
如何仅选择u
节点?比如:
//urn:schemas-upnp-org:service:WANPPPConnection:1/*
我看过一些关于实现NamespaceContext
的文章,但我不明白它的作用,也不知道如何使用它。。。那些examples通常会在某个时候硬编码前缀,这让我觉得它们很愚蠢。而且,该接口的实现通常看起来像是一些非常简单的东西的大量代码
# 1 楼答案
实际上,我在问了几分钟后就回答了自己的问题。我需要将我的
DocumentBuilderFactory
设置为命名空间感知:输出: