- PR -

XmlDocumentをXmlTextReaderに変換したい

1
投稿者投稿内容
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2003-10-22 17:22
お世話になっております。
XmlDocumentオブジェクトの内容(XML)をXmlTextReaderに入れたいのですが
どうやればそのようなことができるでしょうか?
XmlDocument.Save()でMemoryStreamに落としてそれをXmlTextReaderのコンストラクタで
読み込むということは試しましたがダメでした(XmlTextReader.Read()で読み出そうとす
るとルート要素がないと例外が発生する)

----------------試してみたソースです----------------------------
XmlDocument domXml = new XmlDocument();
domXml.Load("c:\\work\\hoge.xml");
MemoryStream ms = new MemoryStream();
domXml.Save(ms);
XmlTextReader reader = new XmlTextReader(ms);
---------------------------------------------------------------

ちなみに一度ファイルに落としてそれをXmlTextReaderから読み込むという方法ならOK
でしたが、ファイルを介さずにメモリ上で行いたいのでその方法をお願いします。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-10-22 17:57
無理やりかな。
コード:
public static void Main()
{
	XmlDocument xd = new XmlDocument();
	xd.LoadXml("<?xml version='1.0'?><test>abc</test>");
	TextWriter tw = new StringWriter();
	XmlWriter xw = new XmlTextWriter(tw);
	xd.WriteTo(xw);
	XmlReader xr = new XmlTextReader(new StringReader(tw.ToString()));
	while (xr.Read()) Console.WriteLine(xr.NodeType + " : " + xr.Name + " = " + xr.Value);
}

NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-10-22 18:04
MemoryStream の seek をしていないだけかと
> domXml.Save(ms);
> XmlTextReader reader = new XmlTextReader(ms);

domXml.Save(ms);
ms.Seek(0, SeekOrigin.Begin); //Seek
XmlTextReader reader = new XmlTextReader(ms);
にするとできましたよ

[ メッセージ編集済み 編集者: NYRL 編集日時 2003-10-22 18:05 ]
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2003-10-22 18:12
できました!
Seek()で先頭に戻しておかなくてはならなかったんですね。
素早い回答をありがとうございました。_(__)_
1

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