Readxml使用属性作为列名和值

时间:2012-03-30 14:29:41

标签: .net xml vb.net binding datatable

是否可以读入xml字符串并使用列命名属性?

例如使用以下xml。

<root>
<CategoryInfo>
    <column name="Category Name" value="1.  In agreement" />
    <column name="Category ID" value="1" />
</CategoryInfo>
<CategoryInfo>
    <column name="Category Name" value="2.  Small conflict" />
    <column name="Category ID" value="2" />
</CategoryInfo>
<CategoryInfo>
    <column name="Category Name" value="3. Strongly Disagree" />
    <column name="Category ID" value="3" />
</CategoryInfo>
<CategoryInfo>
    <column name="Category Name" value="4. Mark For CommitteeReview" />
    <column name="Category ID" value="4" />
</CategoryInfo>

我想用

    Dim ds As New DataSet()
    Dim stream As New IO.StringReader(xmlData.ToString)
    ds.ReadXml(stream)
    Dim dt As DataTable = ds.Tables(0)

要将其转换为数据表,但属性会把它弄得一团糟。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

循环并将每个属性添加为列名。不确定它是否符合您的要求,但它为您提供了另一种选择。

Dim dt As New DataTable
    Dim xmlReader As XmlTextReader = New XmlTextReader("C:\yourxml.xml")
    While xmlReader.Read
        If xmlReader.Name = "column" Then
            If xmlReader.HasAttributes Then
                While xmlReader.MoveToNextAttribute()
                    If Not dt.Columns.Contains(xmlReader.Value) Then
                        dt.Columns.Add(xmlReader.Value)
                    End If
                    Debug.WriteLine(xmlReader.Name + " " + xmlReader.Value)

                End While
            End If
        End If
    End While