首页 > 解决方案 > Visual Studio LINQ for XML 子标签值的不同列表

问题描述

我正在为 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/>

有人知道我要去哪里错了吗?

标签: xmlvb.netlinq

解决方案


尝试以下:

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

推荐阅读