15

xmlファイルを解析するコードをすでに作成しているXmlReaderので、書き直したくありません。プログラムに暗号化を追加しました。xmlドキュメントと暗号化アルゴリズムを使用するencrypt()関数とdecrypt()関数があります。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....... } }
4

4 に答える 4

46

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
于 2012-10-01T15:40:58.573 に答える
1

ファイルへの書き込み:

 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);
        }
    }
于 2012-10-01T15:43:44.873 に答える
1

これは古い質問だと思いますが、この素敵な小さなブログ投稿からメソッドを追加する価値があると思いました。これにより、パフォーマンスの低いメソッドが排除されます。

private static XDocument DocumentToXDocumentReader(XmlDocument doc)
{
    return XDocument.Load(new XmlNodeReader(doc));
}
于 2016-09-09T15:16:08.530 に答える
0

これを試して

    XmlDocument document= new XmlDocument( );
    string pathTmp = "d:\somepath";
    using( FileStream fs = new FileStream( pathTmp, FileMode.CreateNew ))
    {
      document.Save(pathTmp);
      fs.Flush();
    }
于 2015-08-31T09:15:30.333 に答える