XmlDocument.WriteTo truncates結果ファイル
-
25-09-2019 - |
質問
うserialize、XmlDocumentるファイルです。のXmlDocumentは広;しかし、デバッガできますのInnerXml財産はすべてのXML blobでな切り捨てます。
こちらのコードを書き込むという私のXmlDocumentオブジェクトファイル:
// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Close();
ファイルのファイルの作ここだけ書き出しを行う5,760--これは実際に切り捨てのタグ!
誰でもそのアイデアはなぜこのことは短いので、これから
更新: この問題です。また、XMLテキストライターを閉じる前にファイルのストリーム!何たる不覚!
解決
てXmlTextWriterが正しく閉じられていませんでした。 Woops!
他のヒント
あなたは閉じる前にストリームをフラッシュしようとすることができます。 AUTOFLUSHがtrueの場合、私はそれがとにかく閉じる()上のフラッシュを取得だと思うが、それは価値があるかもしれないショットます:
// Write that string to a file.
var fileStream = new FileStream("AdditionalData.xml", FileMode.OpenOrCreate, FileAccess.Write);
xmlDocument.WriteTo(new XmlTextWriter(fileStream, Encoding.UTF8) {Formatting = Formatting.Indented});
fileStream.Flush();
fileStream.Close();
これの道道道...元の質問の後に頼まれたが、それはGoogleの検索結果に現れた。
私は今日類似した何かを経て、(この混乱に直面している次の不幸な魂のために)私の答えを共有したいと思っています。
Iが一定の間隔で(FS)をメモリ内のデータを保持し、その後FILESTREAMにフラッシュするのMemoryStream(MS)とのStreamWriter(SW)を使用しています。
だから私はやっていた。
sw.WriteLine(DateTime.Now.ToString("u").Replace("Z", "") & ": " & entry)
そして、すべてが言わおよび行われた後、
ms.WriteTo(fs)
fs.Flush()
fs.Close()
ms.Close()
問題は、私が最初のMemoryStreamには、StreamWriterをフラッシュされなかったということでした。
このように変更するには、私の問題を解決します。
sw.Flush()
ms.WriteTo(fs)
fs.Flush()
fs.Close()
ms.Close()
私は今日、この問題に直面します:
XmlTextWriter writer = new XmlTextWriter("IdP.xml", null);
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);
私は以下のようにそれを変更したときに、問題が修正されました。
using (XmlTextWriter writer = new XmlTextWriter("IdP.xml", null))
{
writer.Formatting = Formatting.Indented;
xmlElement.WriteTo(writer);
}
希望これは誰かに役立ちます。