2016-05-11 4 views
0

1つのDataTableに多数のレベルとパラメータを含むXMLをどのように変換できますか? 私は、XMLのインポートをどうExcelなどの気にいらが必要になります。多くのレベルのXmlを1つのDataTableに変換する

<?xml version='1.0' encoding='UTF-8'?> 
<Document> 
    <tag1 param1="param"> 
     <tag2 param2="param"> 
     <tag3 param3="param"> 
      <tag4_1 param41="param">VALUE1</tag4_1> 
      <tag4_2 param42="param">VALUE2</tag4_2> 
     </tag3> 
     </tag2> 
    </tag1> 
    <tag1 param1="param"> 
     <tag2 param2="param"> 
     <tag3 param3="param"> 
      <tag4_1 param41="param">VALUE1</tag4_1> 
      <tag4_2 param42="param">VALUE2</tag4_2> 
     </tag3> 
     </tag2> 
    </tag1> 
</Document> 

Excelの例:

enter image description here

は、それはそれを行うための簡単な方法を持っていますか?

このソリューション - ここではテーブルの多くになりますので、それは、私がしたいことはありません:

var dataSet = new DataSet(); 
dataSet.ReadXml(xml, XmlReadMode.InferSchema); 

答えて

0

あなたは、XMLのスキーマを知っている場合は、スキーマに一致したデータクラスを、行うことができます単にXmlSerializerを使用し、Dataオブジェクトをデータテーブルに渡します。

XMLをロードし、

public static object ObjectFromXMLString(Type typeOfObject, string xmlFile) 
    { 
     XmlSerializer serializer = new XmlSerializer(typeOfObject); 
     StringReader rdr = new StringReader(xmlFile); 
     return serializer.Deserialize(rdr); 
    } 
+0

は、私が知っているデータオブジェクトにXMLを変換する文字列

var t = new System.Xml.XmlDocument(); t.Load("PATH"); t.OuterXml 

にXMLを取得する文字列

に変換するために、通常のXMLDocument関数を使用どのようにこのXMLでcreatオブジェクト。私はスキーマとクラスを持っています。私はテーブルにこのXMLを表示したい。それは、情報ファイルが持っていることを示すためにのみ、仮想化のためです。私は単純なテーブルを生成することはできませんが、問題は....それは、 "tag1_tag2_tag_3_tag4_1"または "tag1_tag2_tag_3_tag4_1_param41"のようなすべてのデータを表示する大きな列名を持つテーブルにすることができます – Alex

+0

私はあなたが知っていると仮定しているフィールドはどのように見える必要があります。 必要な列名を使用して、テーブルを作成します。次に、クラスオブジェクトにXMLを取得し、次にどの要素がどの列に入り、行ごとに行を作成するかを操作します。 –

+0

手動でテーブルを作成しますか?ワオ。私のクラス/スキームは約500element/fieldsを持っていますが、xmlは500から50-60の差フィールドしか持たないかもしれません。私の質問は「dataTableをいかに簡単に作成するのですか?答え:白い100500行のコードは正しくありません:) これを行う簡単な方法がない場合は、各XML要素を読み取るためにloopを使ってcreateメソッドを作成する必要があります。列が存在するかどうかをチェックし、列が存在しない場合はテーブルにデータを追加する - 各要素に対して新しい列を追加する。 – Alex

関連する問題