C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: DataSetでDataTableの構造ごとのコピー・追加


(過去ログ 16 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■6137 / inTopicNo.1)  DataSetでDataTableの構造ごとのコピー・追加
  
□投稿者/ はる (1回)-(2007/08/02(Thu) 10:09:22)

分類:[C#] 

いつもお世話になっています。
Visual Studio 2005 C#でXMLファイルのエディタを作成しています。
そこで、DataSetにてXMLファイルを読み込み、データを追加する際に
構造ごと(DataTableごと)指定した位置に追加したいのですが
うまくいきません。

// ソースコード↓↓↓
DataSet aDtSet = new DataSet();
StreamReader aReaderv= new StreamReader("sample.xml",System.Text.Encoding.GetEncoding("Shift_Jis"));

//XMLファイル読み込み
aDtSet.ReadXml(Reader);

//テーブルの追加???

//sample.xmlの構造
//<ProjectFile>
//  <ProjectInfo>
//    <Type>1</Type>
//    <Version>1.0</Version>
//  </ProjectInfo>
//  <ModelData>
//    <Element>
//       <Name>aaa</Name>
//        <Value> --------------------- ※このValueを構造も含めコピーし
//           <Data>1<Data>            |  Name以下に複数追加したい
//        </Value> --------------------
//       </Name>
//    </Element>
//  </ModelData>
//</ProjectFile>

DataTableの扱い方が分からずうまくできません。
ご教授よろしくお願い致します。

引用返信 編集キー/
■6139 / inTopicNo.2)  Re[1]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ HIRO (87回)-(2007/08/02(Thu) 11:27:28)
HIRO さんの Web サイト
No6137 (はる さん) に返信
> //sample.xmlの構造
> //<ProjectFile>
> // <ProjectInfo>
> // <Type>1</Type>
> // <Version>1.0</Version>
> // </ProjectInfo>
> // <ModelData>
> // <Element>
> // <Name>aaa</Name>
> //  <Value> --------------------- ※このValueを構造も含めコピーし
> //  <Data>1<Data> |  Name以下に複数追加したい
> //  </Value> --------------------
> // </Name>
> // </Element>
> // </ModelData>
> //</ProjectFile>
>

DataTabelの扱い方の前に Sample.xmlの構造おかしくないでしょうか?
> // <Name>aaa</Name>
> //  <Value> --------------------- ※このValueを構造も含めコピーし
> //  <Data>1<Data> |  Name以下に複数追加したい
> //  </Value> --------------------
> // </Name>

<Name>タグに対する"</Name>"が2個ありますよ。
引用返信 編集キー/
■6140 / inTopicNo.3)  Re[2]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる (3回)-(2007/08/02(Thu) 11:32:24)
ご返答ありがとうございます。
すみません、写し間違えました。
正しくは以下の通りです。

>>//sample.xmlの構造
>>//<ProjectFile>
>>// <ProjectInfo>
>>// <Type>1</Type>
>>// <Version>1.0</Version>
>>// </ProjectInfo>
>>// <ModelData>
>>// <Element>
>>// <Name>aaa</Name>
>>// <Value> --------------------- ※このValueを構造も含めコピーし
>>// <Data>1<Data> |  Name以下に複数追加したい
>>// </Value> --------------------
>>// </Element>
>>// </ModelData>
>>//</ProjectFile>

Value以下のDataも含めコピーし追加したいのですが
どのようにすればよいのでしょうか?
よろしくお願い致します。
引用返信 編集キー/
■6141 / inTopicNo.4)  Re[3]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ HIRO (88回)-(2007/08/02(Thu) 12:50:36)
HIRO さんの Web サイト
DataSetで行うには、ちょっと階層が深すぎて面倒そうですね。
DOMでの操作の方がよろしいのではないでしょうか?

確認です
はるさんはNo5834のaaaさんと同一人物ですか?
引用返信 編集キー/
■6143 / inTopicNo.5)  Re[4]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる (4回)-(2007/08/02(Thu) 13:05:59)
HIROさん、ご返答ありがとうございます。
前回はお世話になりました。No5834のaaaです。
前回適当な名前をつけたので名前を変更しました。
紛らわしくてすみません。。。

>DataSetで行うには、ちょっと階層が深すぎて面倒そうですね。
>DOMでの操作の方がよろしいのではないでしょうか?

ご意見ありがとうございます。
DOMとはXmlDocumentのことでしょうか?
引用返信 編集キー/
■6144 / inTopicNo.6)  Re[5]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ HIRO (89回)-(2007/08/02(Thu) 13:20:40)
HIRO さんの Web サイト
No6143 (はる さん) に返信
> HIROさん、ご返答ありがとうございます。
> 前回はお世話になりました。No5834のaaaです。
> 前回適当な名前をつけたので名前を変更しました。
> 紛らわしくてすみません。。。
>
> >DataSetで行うには、ちょっと階層が深すぎて面倒そうですね。
> >DOMでの操作の方がよろしいのではないでしょうか?
>
> ご意見ありがとうございます。
> DOMとはXmlDocumentのことでしょうか?

そうです。

別にDataSetでもできると思うのですが、サンプルのXMLファイルをDataSetへ読み込むとDataTableが5つ出来てしまいます(数え間違えていたらご指摘願います)

その5つの中から特定テーブルの特定項目を探して追加するよりはDOMの方が良いような気がします。(これはあくまでも私個人の意見です。絶対という意味ではありません)

DOMを使用する場合は
・XmlDocumentクラス
 Xmlファイルを読み込む(XmlLoadメソッド)
Xmlファイルを保存する(XmlSaveメソッド)
 読み込んだXmlDocumentから特定のノードリストを取得する(SelectNodeメソッド)
・XmlNodeクラス
 読み込んだXmlDocumentから取得したノードリストに、指定したノードを追加する(AppendChild)

等の知識が必要になるかと思います。



引用返信 編集キー/
■6150 / inTopicNo.7)  Re[6]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる (5回)-(2007/08/02(Thu) 14:11:40)
ありがとうございます。
XmlDocumentも試してみました。
XmlDocumentで要素を一つずつ追加することはできましたが
ツリー構造を子も含めてコピーして追加することってできますか?
引用返信 編集キー/
■6152 / inTopicNo.8)  Re[7]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ HIRO (91回)-(2007/08/02(Thu) 14:20:04)
HIRO さんの Web サイト
No6150 (はる さん) に返信
> ありがとうございます。
> XmlDocumentも試してみました。
> XmlDocumentで要素を一つずつ追加することはできましたが
> ツリー構造を子も含めてコピーして追加することってできますか?

取得したノードをXmlNodeクラスのAppendChildメソッドで追加できるのではないでしょうか?
(すみませんが検証しておりません)
引用返信 編集キー/
■6153 / inTopicNo.9)  Re[8]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる (6回)-(2007/08/02(Thu) 15:05:38)
No6152 (HIRO さん) に返信
> ■No6150 (はる さん) に返信
>>ありがとうございます。
>>XmlDocumentも試してみました。
>>XmlDocumentで要素を一つずつ追加することはできましたが
>>ツリー構造を子も含めてコピーして追加することってできますか?
>
> 取得したノードをXmlNodeクラスのAppendChildメソッドで追加できるのではないでしょうか?
> (すみませんが検証しておりません)


以下のコードを書いていますがうまくいきません。
ノードのコピーが足りないように思いますがよく分かりません。

//---ソースコード---------------------------------
XmlDocument doc = new XmlDocumen();
XmlTextWriter tw = new XmlTextWriter("result.xml",null);
XmlNode domNode;
XmlNode addNode;

//XMLファイルの読み込み
doc.Load("sample.xml");

//コピーするノードを設定
addNode=doc.SelectSingleNoe("/ProjectFile/ModelData/Element/Value");

//指定位置に追加実行
domNode=doc.SelectSingleNode("/ProjectFiles/ModelData/Element");
domNode.AppendChild(addNode);

//XMLファイルに書き込み
doc.Save(tw);

//sample.xmlの構造
//<ProjectFile>
// <ProjectInfo>
// <Type>1</Type>
// <Version>1.0</Version>
// </ProjectInfo>
// <ModelData>
// <Element>
// <Name>aaa</Name>
// <Value> --------------------- ※このValueを構造も含めコピーし
// <Data>1<Data> |  Name以下に複数追加したい
// </Value> --------------------
// </Element>
// </ModelData>
//</ProjectFile>


間違いご指摘いただけるとうれしいです。
よろしくお願い致します。
引用返信 編集キー/
■6154 / inTopicNo.10)  Re[9]: DataSetでDataTableの構造ごとのコピー・追加
□投稿者/ はる (7回)-(2007/08/02(Thu) 15:14:50)
すみません、Cloneでノードをコピーする操作が抜けていました。
無事、追加できました。
HIROさん、初歩的な質問にお付き合いいただき
本当にありがとうございました。
またよろしくお願い致します!!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -