簡體   English   中英

內聯VB用於解析XML

[英]Inline VB for Parsing XML

我有一個XML提要,它作為對Web服務調用的響應而返回:

<?xml version="1.0" encoding="utf-8"?>
    <CustomerGetResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WHATEVER/webservice">
    <UserExists>false</UserExists>
    <DisableAccountFlag>false</DisableAccountFlag>
</CustomerGetResult>

我將該響應存儲為名為strRead的字符串。 然后,我嘗試使用以下方法獲取值(不成功):

Dim XMLString = XDocument.Parse(strRead)
Response.Write("UserExists: " & XMLString.<CustomerGetResult>.<UserExists>.Value)
Response.Write("DisableAccountFlag: " & XMLString.<CustomerGetResult>.<DisableAccountFlag>.Value)

我還嘗試了其他方法但未成功:

Dim doc As New System.Xml.XmlDocument()
doc.LoadXML(strRead)
dim SymbolText as String = doc.SelectSingleNode("//CustomerGetResult/UserExists").Value
Response.Write(SymbolText)

現在有人可以幫助我嗎? 這在aspx文件中內聯。

命名空間是關鍵:

Dim myNamespace As XNamespace = YourXMLNameSpace

For Each report As XElement In xmlr.Descendants(myNamespace + "CustomerGetResult")
  Console.WriteLine(report.Element(myNamespace + "UserExists").Value)
Next

這是兩個選擇

        Dim strRead = "<?xml version=""1.0"" encoding=""utf-8""?>" & _
            "<CustomerGetResult xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns=""http://WHATEVER/webservice"">" & _
            "<UserExists>false</UserExists>" & _
            "<DisableAccountFlag>false</DisableAccountFlag>" & _
        "</CustomerGetResult>"

        Dim XMLString As XDocument = XDocument.Parse(strRead)
        Dim root As XElement = XMLString.Root
        Dim ns As XNamespace = root.GetDefaultNamespace()

        'Method 1
        Console.WriteLine("UserExists: {0}", CType(XMLString.Descendants(ns + "UserExists").FirstOrDefault(), String))
        Console.WriteLine("DisableAccountFlag: {0}", CType(XMLString.Descendants(ns + "DisableAccountFlag").FirstOrDefault(), String))

        'Method 2
        Console.WriteLine("UserExists: {0}", CType(XMLString.Descendants().Where(Function(x) x.Name.LocalName = "UserExists").FirstOrDefault(), String))
        Console.WriteLine("DisableAccountFlag: {0}", CType(XMLString.Descendants().Where(Function(x) x.Name.LocalName = "DisableAccountFlag").FirstOrDefault(), String))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM