Visual Studio LINQ for XML子标记值的不同列表

时间:2019-03-30 16:49:38

标签: xml vb.net linq

我正在编写我的第一个用于XML查询的LINQ,但没有成功。我有以下代码:

    Dim xmlIn = XDocument.Load("wiktionary.xml")

    Dim xmlOut = <namespaces>
                     <%= From ns In xmlIn...<mediawiki>.<page>.<ns>
                         Select ns %>
                 </namespaces>

    My.Computer.FileSystem.WriteAllText("wiktionaryout.xml", xmlOut.ToString, False)
    Process.Start("wiktionaryout.xml")

XML的格式为

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="af">
  <siteinfo>
  ...
  </siteinfo>
  <page>
    <title>MediaWiki:Edithelppage</title>
    <ns>8</ns>
    <id>21</id>
  </page>
</mediawiki>

我正在尝试提取<ns>标签之间的值的不同列表。目前,我只是想获取所有值的列表,但它只是带回了

<?xml version="1.0"?>
<namespaces/>

有人知道我要去哪里吗?

1 个答案:

答案 0 :(得分:1)

尝试以下操作:

Imports System.Xml
Imports System.Xml.Linq
Module Module1
    Const FILENAME As String = "c:\temp\test.xml"
    Sub Main()
        Dim doc As XDocument = XDocument.Load(FILENAME)

        Dim ns As List(Of String) = doc.Descendants().Where(Function(x) x.Name.LocalName = "ns").Select(Function(x) CType(x, String)).Distinct().ToList()
    End Sub

End Module