?如何通过元素名称的一部分获取标签
? How to obtain tags by part of element name
我有以下 XML 回复:
<S:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns0:RespOpReportGen
xmlns:ns7="http://my.service.url/Schemas/folder1"
xmlns:ns4="http://my.service.url/framework/folder2"
xmlns:ns13="http://my.service.url/framework/folder3"
xmlns:ns0="http://my.service.url/framework/folder4">
<ns0:contextResponse>
<ns4:trnResult>
<ns13:trnStatus/>
<ns13:OKNOResponse>B</ns13:OKNOResponse>
<ns13:ApprovalNr>0</ns13:ApprovalNr>
<ns13:trnID>213454567</ns13:trnID>
<ns13:trnDate>2019-03-13T13:02:10.76</ns13:trnDate>
</ns4:trnResult>
</ns0:contextResponse>
<ns0:FileResponse>
<ns7:contentFile>JVBERi0</ns7:contentFile>
<ns7:mimeType>application/pdf</ns7:mimeType>
</ns0:FileResponse>
</ns0:RespOpReportGen>
</S:Body>
</S:Envelope>
我使用下面的代码来获取标签 ns7:contentFile
中的值
Dim soapResultXml As XmlDocument = New XmlDocument()
soapResultXml.LoadXml(soapResult)
Dim resultado As XmlNodeList = soapResultXml.GetElementsByTagName("contentFile")
...但我没有得到任何结果。
有没有办法通过名称的一部分获取标签?或者...我如何获得 "ns7:" 值以将其与 "contentFile" 连接起来?
在此先致谢,并致以最诚挚的问候。
编辑
Dim soapResultXml As XmlDocument = New XmlDocument()
soapResultXml.LoadXml(soapResult)
Dim resultado As XmlNodeList = soapResultXml.SelectNodes("//*[contains(name(),'contentFile')]")
它也有效。
您需要添加和配置 XmlNamespaceManager
。像这样。
Dim soapResultXml As XmlDocument = New XmlDocument()
soapResultXml.LoadXml(soapResult)
Dim xnm as New XmlNamespaceManager(soapResultXml.NameTable)
xnm.AddNamespace("ns7", "http://my.service.url/folder1")
''//add more namespaces
''// xnm.AddNamespace("ns8", "http://my.service.url/folder2")
''//prefix doesn't matter. URI matters.
Dim resultado As XmlNodeList = soapResultXml.SelectNodes("contentFile", xnm)
我有以下 XML 回复:
<S:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns0:RespOpReportGen
xmlns:ns7="http://my.service.url/Schemas/folder1"
xmlns:ns4="http://my.service.url/framework/folder2"
xmlns:ns13="http://my.service.url/framework/folder3"
xmlns:ns0="http://my.service.url/framework/folder4">
<ns0:contextResponse>
<ns4:trnResult>
<ns13:trnStatus/>
<ns13:OKNOResponse>B</ns13:OKNOResponse>
<ns13:ApprovalNr>0</ns13:ApprovalNr>
<ns13:trnID>213454567</ns13:trnID>
<ns13:trnDate>2019-03-13T13:02:10.76</ns13:trnDate>
</ns4:trnResult>
</ns0:contextResponse>
<ns0:FileResponse>
<ns7:contentFile>JVBERi0</ns7:contentFile>
<ns7:mimeType>application/pdf</ns7:mimeType>
</ns0:FileResponse>
</ns0:RespOpReportGen>
</S:Body>
</S:Envelope>
我使用下面的代码来获取标签 ns7:contentFile
中的值Dim soapResultXml As XmlDocument = New XmlDocument()
soapResultXml.LoadXml(soapResult)
Dim resultado As XmlNodeList = soapResultXml.GetElementsByTagName("contentFile")
...但我没有得到任何结果。
有没有办法通过名称的一部分获取标签?或者...我如何获得 "ns7:" 值以将其与 "contentFile" 连接起来?
在此先致谢,并致以最诚挚的问候。
编辑
Dim soapResultXml As XmlDocument = New XmlDocument() soapResultXml.LoadXml(soapResult) Dim resultado As XmlNodeList = soapResultXml.SelectNodes("//*[contains(name(),'contentFile')]")
它也有效。
您需要添加和配置 XmlNamespaceManager
。像这样。
Dim soapResultXml As XmlDocument = New XmlDocument()
soapResultXml.LoadXml(soapResult)
Dim xnm as New XmlNamespaceManager(soapResultXml.NameTable)
xnm.AddNamespace("ns7", "http://my.service.url/folder1")
''//add more namespaces
''// xnm.AddNamespace("ns8", "http://my.service.url/folder2")
''//prefix doesn't matter. URI matters.
Dim resultado As XmlNodeList = soapResultXml.SelectNodes("contentFile", xnm)