Java 如何使用jsoup解析带有前缀的SOAP XML?
这是一个示例XMLJava 如何使用jsoup解析带有前缀的SOAP XML?,java,xml,parsing,soap,jsoup,Java,Xml,Parsing,Soap,Jsoup,这是一个示例XML <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header/> <env:Body> <ns0:NotifyRequest xmlns:ns3='http://dummyurl.com'> <PartTotal>10</PartTotal> <PartNo&g
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<ns0:NotifyRequest xmlns:ns3='http://dummyurl.com'>
<PartTotal>10</PartTotal>
<PartNo>2</PartNo>
</ns0:NotifyRequest>
</env:Body>
10
2.
我的服务器接受这些请求,并通过Jsoup解析。我通过标记“ns0:NotifyRequest”获取元素,然后查找子元素
我的问题是;当前缀更改时,我的解析器会失败,因为元素标记“ns0:NotifyRequest”是硬编码的,当收到的XML类似于“ns3:NotifyRequest”时,它会给出一个错误
有没有办法忽略此前缀并获取NotifyRequest元素?我知道我不能直接从一级元素中获取内部元素。(我的意思是我可以使用BodyElement.getElementsByTag(“PartTotal”)而不是NotifyRequestElement.getElementsByTag(“PartTotal”),它们做同样的工作)但我想使用正则表达式或其他东西,忽略随机前缀并获取NotifyRequest元素。根据使用
的文档。选择(“*| NotifyRequest”)
应该可以工作,但快速测试表明,在与xml解析器结合时可能会出现问题。正如Luk所提到的,JSoup似乎无法处理名称空间的通配符。既然这是XML,您是否研究过Java提供的一些XML解析器?