【问题标题】:? How to obtain tags by part of element name?如何通过元素名称的一部分获取标签
【发布时间】:2019-04-03 17:00:10
【问题描述】:

我有以下 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')]")

它也有效。

【问题讨论】:

    标签: xmldocument getelementsbytagname


    【解决方案1】:

    您需要添加和配置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)
    

    【讨论】:

    • 我注意到标签“contentFile”并不总是以“ns7:”开头......它可能是“ns14:”、“ns9:”、......
    • xnm添加更多命名空间
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多