[英]Creating large xml using XMLWriter in C#
我試圖使用XMLWriter創建一個包含大數據的xml,該函數執行時沒有任何異常。但是當我打開XML時,我發現創建的XML不完整,它在中途被破壞。我不知道我做錯了什么。是否有XMLWriter的默認大小限制? XMLWriter是創建大型XML的最佳方式嗎? 如果沒有,請告訴我什么是創建大型xml的最佳方法? 使用XDocument是否讓我的生活更輕松?
這是我的代碼結構(我不能把我的原始代碼放在這里!! :()
using (//file stream)
{
XmlWriter mywriter = new XmlWriter.Create(@"C:\mydata.xml");
// write start element1
// write start element2
while (//not end of file)
{
switch (entrytype)
{
Case 1:
// create elements
Case 2:
// create elements
so on ....
}
}
// write end element2
// write endelement1
}
XML的大小預計為幾百KB。
請回復..
我懷疑你沒有正確關閉寫入:
using (//file stream)
{
using(XmlWriter mywriter = new XmlWriter.Create(@"C:\Auditlog.xml")) {
// write start element1
// write start element2
while (//not end of file)
{
switch (entrytype)
{
Case 1:
// create elements
Case 2:
// create elements
so on ....
}
}
// write end element2
// write endelement1
}
}
注意額外using
- 沒有編寫器可能仍然有一些數據仍然緩沖。 這通常會占到缺少結束的數據; 如果沒有可重復的例子,我們就無法診斷它在中途退出。
另請注意:xml 適用於大文件,但它不一定是最好的choce - 幾百k應該沒問題。
XmlWriter正是用於創建大型XML文件的工具,大小限制將由基礎流決定,在您的情況下是文件系統,因此只要您有可用空間,就應該沒問題。
每次編寫一個start元素時,都應確保提供相應的end元素,否則將拋出異常。 您沒有提供說明問題的代碼的完整示例,因此無法確定是什么問題。
在構造函數中指定文件名時,也不需要使用文件流:
using (var writer = new XmlWriter.Create(@"C:\mydata.xml"))
{
// TODO: use the writer here
}
using (//file stream)
{
using(XmlWriter mywriter = new XmlWriter.Create(@"C:\Auditlog.xml")) {
// write start element1
// write start element2
while (//not end of file)
{
switch (entrytype)
{
Case 1:
// create elements
Case 2:
// create elements
so on ....
}
}
// write end element2
// write endelement1
mywriter.Close();
}
}
幾百KB不是那么大! 別擔心! :)
問候,
Mazhar Karimi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.