c# - 将新节点添加到 xml 末尾的最快方法?

标签 c# .net xml

我有一个大的 xml 文件(大约 10 MB),结构如下:

<Errors>
   <Error>.......</Error>
   <Error>.......</Error>
   <Error>.......</Error>
   <Error>.......</Error>
   <Error>.......</Error>
</Errors>

我的需要是在 标签之前的末尾添加一个新节点 。在 .net 中实现此目的最快的方法是什么?

最佳答案

您需要使用 XML 包含技术。

您的 error.xml(不会改变,只是一个 stub 。用于 XML 解析器读取):

<?xml version="1.0"?>
<!DOCTYPE logfile [
<!ENTITY logrows    
 SYSTEM "errorrows.txt">
]>
<Errors>
&logrows;
</Errors>

您的 errorrows.txt 文件(更改,xml 解析器不理解它):

<Error>....</Error>
<Error>....</Error>
<Error>....</Error>

然后,向 errorrows.txt 添加一个条目:

using (StreamWriter sw = File.AppendText("logerrors.txt"))
{
    XmlTextWriter xtw = new XmlTextWriter(sw);

    xtw.WriteStartElement("Error");
    // ... write error messge here
    xtw.Close();
}

或者您甚至可以使用 .NET 3.5 XElement,并将文本附加到 StreamWriter:

using (StreamWriter sw = File.AppendText("logerrors.txt"))
{
    XElement element = new XElement("Error");
    // ... write error messge here
    sw.WriteLine(element.ToString());
}

另见 Microsoft's article Efficient Techniques for Modifying Large XML Files

关于c# - 将新节点添加到 xml 末尾的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849043/

相关文章:

xml - 加密 ccnet.config TFS 登录详细信息

c# - 使用 EFCore.BulkExtensions 时是否需要调用 SaveChanges

c# - 我可以使用什么技术为我的 C# 应用程序编写一个 View ?

c# - System.Drawing.Color 转换 FromArgb 问题

.net - 何时使用 CultureInfo.GetCultureInfo(String) 或 CultureInfo.CreateSpecificCulture(String)

java - 如何在计时器中通过 java 旋转 android 中布局背景的图片?

c# - 为什么这个 XML 在不应该进行验证时进行验证?

c# - 对于 Func<T, TResult>,其中 A extends T,A 不满足 T

c# - 获取枚举值

c# - 使用正则表达式搜索字符串