- PR -

XMLファイルへ書き込む際のヘッダーの付加

1
投稿者投稿内容
RIZ
ベテラン
会議室デビュー日: 2003/11/05
投稿数: 61
投稿日時: 2003-11-26 11:57
DataGridの内容をDataSetを用いてXMLファイルへ書き込んでいます。
(下記のような処理をして)
XmlTextWriter writer=null;
writer = new XmlTextWriter("書き込むXMLのファイルパス",System.Text.Encoding.UTF8);
writer.Formatting=Formatting.Indented;
データセット.WriteXml(writer);

このまま書き込むとXMLファイルへは
<Top>
<Data No="1">
<Name>山田</Name>
<from>東京</from>
<Class>1</Class>
</Data>
</Top>
のように書き込まれます。この際に、1行目に
<?xml version="1.0" encoding="utf-8"?>
とXMLのヘッダーを入れたいのですが、どのようにすれば良いのでしょうか?
また、コメントを入れることは可能なのでしょうか?
<Top>
<Data No="1">
<!-- 名前 -->
<Name>山田</Name>
<from>東京</from>
<Class>1</Class>
</Data>
</Top>
のような形で

よろしくお願いいたします。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-11-26 13:15
データセットの内容をwriterに書き込む前に、
writer.WriteStartDocument();
を呼ぶとヘッダーつくんですかね。

#未確認ですが。

データセットの内容を書き込んでいる中で
コメントを入れるのは、WriteXmlメソッドを
利用している限りはできなさそーな。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-11-26 13:36
こんにちわ。諸農です。

引用:

RIZさんの書き込み (2003-11-26 11:57) より:

XmlTextWriter writer=null;
writer = new XmlTextWriter("書き込むXMLのファイルパス",System.Text.Encoding.UTF8);
writer.Formatting=Formatting.Indented;
データセット.WriteXml(writer);



StartDocumentを呼び出せばよいかと。
あと、最後にはCloseを呼ぶほうがよいかと。

それと、もう少しご自分で試してみたりするのも良いかと。

コード:
DataSet ds = new DataSet("MyData");
DataTable tb = new DataTable("MyTable");
tb.Columns.Add("Data1",typeof(int));
tb.Columns.Add("Data2",typeof(string));
for (int i = 0;i<10;i++)
{
	DataRow r = tb.NewRow();
	r["Data1"] = i;
	r["Data2"] = i.ToString();
	tb.Rows.Add(r);
}
ds.Tables.Add(tb);

XmlTextWriter wr =
	new XmlTextWriter(Path.ChangeExtension(Application.ExecutablePath,".xml"),
					  System.Text.Encoding.UTF8);
wr.Formatting=Formatting.Indented;
wr.WriteStartDocument();
ds.WriteXml(wr);
wr.WriteEndDocument();
wr.Close();



結果の内容
コード:
<?xml version="1.0" encoding="utf-8"?>
<MyData>
  <MyTable>
    <Data1>0</Data1>
    <Data2>0</Data2>
  </MyTable>
  <MyTable>
    <Data1>1</Data1>
    <Data2>1</Data2>
  </MyTable>
  <MyTable>
    <Data1>2</Data1>
    <Data2>2</Data2>
  </MyTable>
  <MyTable>
    <Data1>3</Data1>
    <Data2>3</Data2>
  </MyTable>
  <MyTable>
    <Data1>4</Data1>
    <Data2>4</Data2>
  </MyTable>
  <MyTable>
    <Data1>5</Data1>
    <Data2>5</Data2>
  </MyTable>
  <MyTable>
    <Data1>6</Data1>
    <Data2>6</Data2>
  </MyTable>
  <MyTable>
    <Data1>7</Data1>
    <Data2>7</Data2>
  </MyTable>
  <MyTable>
    <Data1>8</Data1>
    <Data2>8</Data2>
  </MyTable>
  <MyTable>
    <Data1>9</Data1>
    <Data2>9</Data2>
  </MyTable>
</MyData>




ではでは(^^)/
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
RIZ
ベテラン
会議室デビュー日: 2003/11/05
投稿数: 61
投稿日時: 2003-11-26 13:39
小野@EACさん、ありがとうございます。
早速記述してテストしてみたら書き込まれていました。

コメントはWriteCommentメソッドがありました。
ただ書き込んでる途中というのは厳しいようなので、
これでカバーしたいと思います。

ありがとうございました。
RIZ
ベテラン
会議室デビュー日: 2003/11/05
投稿数: 61
投稿日時: 2003-11-26 13:48
Jubeiさん、ありがとうございます。

すみません。
もう少しどういうメソッドがあるのか等、ちゃんと確認するように
します。
wr.Close();は書込みし忘れていました。

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

スキルアップ/キャリアアップ(JOB@IT)