【问题标题】:VB.Net: Parsing an XML DocumentVB.Net:解析 XML 文档
【发布时间】:2017-04-17 17:12:50
【问题描述】:

代码:

 Dim xmlString As String = File.ReadAllText(filepath)
 xmlString = fixTextForXML(xmlString)
 Dim doc As XDocument = XDocument.Parse(xmlString)
 Dim namespaces As New XmlNamespaceManager(New NameTable)
 Dim myNameSpaces As New Dictionary(Of String, XNamespace)
 For Each myName As XAttribute In doc.Root.Attributes()
       Console.WriteLine(myName.ToString)
       If (myName.Name = "xmlns") Then
                namespaces.AddNamespace("ns", doc.Root.GetDefaultNamespace.ToString)
                Dim tempNS As XNamespace = doc.Root.GetDefaultNamespace.ToString
                myNameSpaces.Add("ns", tempNS)
            Else
                Dim tempNS As XNamespace = myName.Value
                myNameSpaces.Add(myName.Name.LocalName, tempNS)
                namespaces.AddNamespace(myName.Name.LocalName, myName.Value)
            End If
        Next

这让我可以使用...

Console.WriteLine(doc.Descendants.Elements(myNameSpaces("ns4") + "example").Value

获取example 的值。我的问题是xml中有多个example ...

<ns4:example>

<id>something</id>

<name>something</name>

</ns4:example>


<ns4:example>

<id>something</id>

<name>something</name>

</ns4:example>

我将如何循环并获取所有的 `example's?

【问题讨论】:

    标签: xml vb.net parsing xml-namespaces descendant


    【解决方案1】:

    XDocument.Descendants.Elements 返回一个 XElements 数组,因此以下代码将为您提供满足您条件的所有元素

    Dim list As List(Of XElement) = doc.Descendants.Elements(myNameSpaces("ns4") + "example").ToList()
    
    For Each element As XElement In list
        Console.WriteLine(element.Value)
    Next
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多