gpt4 book ai didi

xml - 在 XML 文档中选择节点值返回 null

转载 作者:行者123 更新时间:2023-12-04 05:09:19 27 4
gpt4 key购买 nike

这是我试图解析的 XML 响应:

<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">0.7627</double>

VB代码:

Dim responseString As String

Dim fromCurrency As String = "EUR"
Dim toCurrency As String = "USD"


Dim req As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=" & fromCurrency & "&ToCurrency=" & toCurrency)
Dim Resp As System.Net.HttpWebResponse = req.GetResponse()
Dim reader As StreamReader = New StreamReader(Resp.GetResponseStream)
responseString = reader.ReadToEnd()

'get the XML
Dim objXML As New XmlDocument
objXML.LoadXml(responseString)

Dim root As XmlNode = objXML.DocumentElement

Dim nodeList As XmlNodeList = root.SelectNodes("/double")

如何读取“0.7627”的结果值?

我试过:

nodeList(0).InnerText



nodeList(0).SelectSingleNode("/double").InnerText

两者都抛出错误“未将对象引用设置为对象的实例”。

我还尝试添加一个命名空间管理器:

Dim mgr As XmlNamespaceManager = New XmlNamespaceManager(objXML.NameTable)
mgr.AddNamespace("currency", objXML.DocumentElement.NamespaceURI)

Dim node As XmlNode = objXML.SelectSingleNode("double", mgr)

并选择通过:

node.InnerText

但这也会引发“未将对象引用设置为对象的实例”。

最佳答案

以下是我在代码中看到的问题:

  • 您需要正确定义命名空间(它是 XML 中的命名空间: "http://www.webserviceX.NET/" )
  • 您需要在传递给 SelectSingleNode 的 XPath 表达式中使用命名空间

  • 这是我的做法(使用 C#):
    var namespaceManager = new XmlNamespaceManager(objXML.NameTable);
    namespaceManager.AddNamespace("wsx", "http://www.webserviceX.NET/");

    var doubleNode = root.SelectSingleNode("/wsx:double", namespaceManager);

    Console.WriteLine(doubleNode.InnerText);

    这是 VB.NET 等价物(我希望它是对的,我使用工具转换了代码):
    Dim namespaceManager = New XmlNamespaceManager(objXML.NameTable)
    namespaceManager.AddNamespace("wsx", "http://www.webserviceX.NET/")

    Dim doubleNode = root.SelectSingleNode("/wsx:double", namespaceManager)

    Console.WriteLine(doubleNode.InnerText)

    关于xml - 在 XML 文档中选择节点值返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075525/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com