2016-08-05 36 views
-1

問題があります。C#のXMLエディタ - 現在のフィールド表示

私はDataGridviewで読みたいデータフィールドを持つ1つのXMLファイルを持っています。

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<DATAPACKET Version="2.0"> 
    <METADATA> 
     <FIELDS> 
      <FIELD attrname="ALMO_Exercicio" fieldtype="string" WIDTH="4"/> 
      <FIELD attrname="ALMO_MesReferencia" fieldtype="string" WIDTH="2"/> 
      <FIELD attrname="ALMO_Saldo" fieldtype="string" WIDTH="17"/> 
     </FIELDS> 
     <PARAMS/> 
    </METADATA> 
    <ROWDATA> 
     <ROW ALMO_Exercicio="2016" ALMO_MesReferencia="01" ALMO_Saldo="0.00"/> 
    </ROWDATA> 
</DATAPACKET> 

これを読んC#ファイル:だから、私は開いたときに表示さ唯一の事は

try 
{ 
    XmlReader xmlFile = XmlReader.Create(ofd.FileName, new XmlReaderSettings()); 
    ds.ReadXml(xmlFile); 
    dataGridView1.DataSource = ds.Tables[0].DefaultView; 
} 

されています: software only shows the version of xml file

私がするために必要なもの行う?

+0

最初のテーブルは 'DATAPACKET'です。あなたは他のものを試しましたか(6つありますか?)実際に何を見せようとしていますか? –

+0

XMLはどのように作成されましたか?タイプ 'DataSet'の' ds 'ですか?あなたのXMLファイルは私にとって 'DataSet'のために有効ではありません。 XMLを自分で処理しなければならないと思います。 –

+0

@CharlesMager試したことがありません。フィールドのすべてのデータを表示します。 ALMO_Exercicio、ALMO_MesReferencia、ALMO_Saldo。 BastianThiede XMLは別のソフトウェア(governamentalソフトウェア)から作成され、ソフトウェアからデータを書き込んで再度送信する必要があります。 XMLを処理するコードをどのように変更できますか? xmlファイルのフルコードのリンクは次のとおりです。https://drive.google.com/file/d/0Bxgpn5JmX9HdQXZXUzNjRVIzZmc/view?usp=sharing –

答えて

0

あなたは自分でXMLを処理する必要があります。そのままDataSetにロードすることはできません。

FIELDから列を作成し、ROWから同じ名前の属性を検索して行データを取得することができます。これは、XMLにLINQと非常に簡単です:

var doc = XDocument.Load(ofd.FileName); 

var columns = doc.Descendants("FIELD") 
    .Attributes("attrname") 
    .Select(fieldName => new DataColumn(fieldName.Value)) 
    .ToArray(); 

var rows = doc.Descendants("ROW") 
    .Select(row => columns.Select(col => (string)row.Attribute(col.ColumnName)).ToArray()); 

あなたは、このからDataTableを作成することができます。

var table = new DataTable(); 

table.Columns.AddRange(columns); 

foreach (var row in rows) 
{ 
    table.Rows.Add(row); 
} 

は、作業のデモのためにthis fiddleを参照してください。

+0

チャールズありがとう、ありがとうございます!本当に助けに感謝します。 –

+0

私はもう1つの質問があります: あなたのコードでは、彼はC#ソースに埋め込まれたxmlテキストを開きますが、私はボタンを持っています。 –

+0

@LeandroMachado質問コードは、開いているファイルのダイアログファイル名を使用します。それはあなたの後のことですか? –

関連する問題