2012-03-30 9 views
0

xml文字列を読み込み、列の名前付けに属性を使用できますか?属性を列名と値として使用するReadxml

たとえば、次の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) 

を使用したいが、属性の混乱でしょう。

ありがとうございました。

+0

どのように属性が混乱しますか? –

+0

これは2つのテーブルを作成し、最初は生成された列IDです。 2番目のテーブルには2ではなく3つのカラムがあり、カラムは "name"、 "value"、生成されたカラムIDの別のカラムです。 3行ではなく、属性を持つ行がいくつかあります。 – Javier

答えて

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

私はちょうどdatatableを構築しました。あなたの提案をありがとう。 – Javier

関連する問題