簡體   English   中英

Vb.net LINQ查詢XML數據

[英]Vb.net linq query on xml data

我在XML和LINQ方面還很陌生。 我有一個這樣的XLM文件:

<?xml version="1.0" encoding="utf-8"?>
<Headers  xmlns="http://tempuri.org/GridLayerSchema.xsd">
<Header>
    <Name>Layer0</Name>
    <Fields FieldID="FieldID0" FieldName="FieldNameAll" FieldPosition="0"FieldPositionStart="0" FieldLenght="254" FieldEnable="true" />
</Header>
<Header>
    <Name>Layer1</Name>
    <Fields FieldID="FieldID0" FieldName="JetPosition" FieldPosition="0" FieldPositionStart="0" FieldLenght="14" FieldEnable="true" />
   <Fields FieldID="FieldID1" FieldName="Owner" FieldPosition="1" FieldPositionStart="14" FieldLenght="14" FieldEnable="true" />
   <Fields FieldID="FieldID2" FieldName="Item" FieldPosition="2" FieldPositionStart="28" FieldLenght="3" FieldEnable="true" />
 </Header>
</Headers>​

我需要以兩種方式瀏覽文件。

  • 首先,我需要使用Header.name創建一個組合框itemsource屬性
  • 其次,我需要使用選擇層的字段制作一個Datagrid標頭。

我已經做了一個LINQ查詢以獲取Name屬性,但是沒有用。

Dim xdoc As XDocument = XDocument.Load(My.Application.Info.DirectoryPath & "\Layers\Layers.xml")

    Dim query = From el In xdoc...<Headers>
                Select New Header With {.Name = el.@Name}
    For Each e In query
         HeadersCollection.Add(e)
    Next

您將必須包含XML的命名空間,並且可以找到所有Header元素。 這將為您提供正確的結果:

Dim ns As XNamespace = "http://tempuri.org/GridLayerSchema.xsd"
Dim query = From e1 In xdoc.Root.Elements(ns + "Header")
                    Select New With {.Name = e1.Element(ns + "Name").Value}

暫無
暫無

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

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