簡體   English   中英

在VB.NET中使用Linq解析XML

[英]Parsing XML using Linq in VB.NET

我在解析XML文件並獲得期望的結果時遇到問題。 方案是我從組合框中選擇一個選項。 我有兩個從XML文件返回的選項(“現金支出”和“日記帳”)。 我遇到的問題是下一個組合框的填充。 我要使用的所有“列名稱名稱”填充組合框的值。

以下是我的XML列表。

<file_import_types>
    <importtypes>
        <types import_type_name="Cash Disbursements">
            <type name="This - IS the name I want" import="Payments" uniquecol="2" countcol="5" ft="C">
                <columns>
                    <column name="test" Type="Double" Literal="1" GLNumber="0" Vend or="0" Format="" />
                    <column name="123" Type="String" Literal="1" GLNumber="0" Vendor="0" Format="String" />
                    <column name="Tester" Type="String" Literal="0" GLNumber="0" Vendor="0" Format="String" />
                    <column name="DATE" Type="DateTime" Literal="0" GLNumber="0" Vendor="0" Format="Date" />
                    <column name="test_again" Type="Double" Literal="1" GLNumber="1" Vendor="0" Format="" />
                    <column name="CountTest" Type="Double" Literal="0" GLNumber="0" Vendor="0" Format="" />
                    <column name="BlankTest" Type="DBNull" Literal="1" GLNumber="0" Vendor="0" Format="" />
                    <column name="DESCRIPTION" Type="String" Literal="0" GLNumber="0" Vendor="0" Format="String" />
                    <column name="NumberTest" Type="Double" Literal="0" GLNumber="1" Vendor="0" Format="" />
                    <column name="Thisisjustatest" Type="Double" Literal="0" GLNumber="0" Vendor="0" Format="Money" />
                </columns>
            </type>
        </types>
    </importtypes>
</file_import_types>

這是我的代碼:

'ACHFileType is the name of my second combobox that I am trying to populate.
ACHFileType.Items.Clear()
Dim importDefinitionElement As XElement = _
    (From xmlDefinitions As XElement In xmlFile.Descendants _
     Where xmlDefinitions.Attribute("import_type_name") = cbFilter.SelectedItem.ToString) _
    .FirstOrDefault
Dim query = From xmlDefinition As XElement In importDefinitionElement.Descendants Where xmlDefinition.Name = "type"
Dim formatType2 As New List(Of String)
Dim type As String = cbFilter.SelectedItem.ToString.Substring(0, 1)

For Each xmlColumn As XElement In query
    ' Loops through Columns in Excel
    If xmlColumn.Attribute("ft").Value.ToString = type Then
        For Each g As XAttribute In query.Elements.Elements.Attributes("name")
            Debug.Print(g.Value.ToString)
            formatType2.Add(g.Value)
        Next
    End If
Next

For Each a As String In formatType2
    ACHFileType.Items.Add(a.ToString())
    'The values that get populated here are "test", "123", "Tester", etc...  The value I am expecting is "This - Is the name I want"
Next       

任何幫助,將不勝感激。

由於Dim query = From xmlDefinition As XElement In importDefinitionElement.Descendants Where xmlDefinition.Name = "type"正在為您獲取type標記的XElement ,因此只需執行以下操作:

Dim value = CType(query.Attribute("name"), String)

暫無
暫無

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

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