2012-03-30 1 views
0

Ist es möglich, eine XML-Zeichenfolge einzulesen und die Attribute für die Spaltenbenennung zu verwenden?Readxml verwendet Attribute als Spaltennamen und Werte

Zum Beispiel mit dem folgenden 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> 

würde Ich mag

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

verwenden, um es zu einem Datentabelle zu konvertieren, aber die Attribute mess it all up.

Danke für jede Hilfe.

+0

Wie machen die Attribute es durcheinander? –

+0

Es erstellt 2 Tabellen, die erste ist nur die generierte Spalte ID. Die zweite Tabelle hat 3 Spalten, nicht 2 und die Spalten sind "Name", "Wert", dann eine weitere Spalte der generierten Spalten-IDs. Statt 3 Zeilen gibt es mehrere Zeilen mit den Attributen. – Javier

Antwort

1

Dies führt eine Schleife durch und fügt jedes Attribut als Spaltennamen hinzu. Nicht sicher, ob es entlang der Linien für das, was Sie suchen, aber es gibt Ihnen eine andere Option.

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 
+0

Ich habe am Ende nur die Datentabelle gebaut. Danke für Ihren Vorschlag. – Javier