0

代码:

 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。我的问题是examplexml中有多个...

<ns4:example>

<id>something</id>

<name>something</name>

</ns4:example>


<ns4:example>

<id>something</id>

<name>something</name>

</ns4:example>

我将如何遍历并获取所有“示例”?

4

1 回答 1

0

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
于 2017-04-17T21:27:48.507 回答