XmlReader
を使用してxmlファイルを解析するコードをすでに記述しているので、それを書き直したくありません。プログラムに暗号化を追加しました。 xmlドキュメントと暗号化アルゴリズムを取得するencrypt()およびdecode()関数があります。 xmlリーダーを使用してファイルを解析する関数がありますが、xmlドキュメントではxmlreaderの作成方法がわかりません。
問題は、xmlドキュメントをストリームに保存する方法です。シンプルだと思いますが、ストリームについては何も知りません。
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(filep);
Decrypt(doc, key);
Stream tempStream = null;
doc.Save(tempStream); // <--- the problem is here I think
using (XmlReader reader = XmlReader.Create(tempStream))
{
while (reader.Read())
{ parsing code....... } }
MemoryStream
クラスで試すことができます
XmlDocument xmlDoc = new XmlDocument( );
MemoryStream xmlStream = new MemoryStream( );
xmlDoc.Save( xmlStream );
xmlStream.Flush();//Adjust this if you want read your data
xmlStream.Position = 0;
//Define here your reading
ファイルへの書き込み:
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<FTPSessionOptionInfo><HostName>ftp.badboymedia.ca</HostName></FTPSessionOptionInfo>");
using (StreamWriter fs = new StreamWriter("test.xml"))
{
fs.Write(doc.InnerXml);
}
}
これは古い質問だと思いますが、これからメソッドを追加する価値があると思いました 素敵な小さなブログ投稿 。これにより、パフォーマンスの低いメソッドがいくつか除外されます。
private static XDocument DocumentToXDocumentReader(XmlDocument doc)
{
return XDocument.Load(new XmlNodeReader(doc));
}
これを試して
XmlDocument document= new XmlDocument( );
string pathTmp = "d:\somepath";
using( FileStream fs = new FileStream( pathTmp, FileMode.CreateNew ))
{
document.Save(pathTmp);
fs.Flush();
}