C# 将数据附加到现有xml文件,而不将文件加载到内存中

C# 将数据附加到现有xml文件,而不将文件加载到内存中,c#,xml-serialization,xml-parsing,linq-to-xml,C#,Xml Serialization,Xml Parsing,Linq To Xml,我希望向现有xml文件添加数据,而不必将现有文件加载到momory中 我有一个数据模型: public class clsPerson { public string FirstName; public string LastName; public List<string> Likes; } 公共类clsPerson { 公共字符串名; 公共字符串LastName; 公开列出喜欢的人; } 我有一段代码,将两个人添加到一个xml文件中,关闭该文件,然后我

我希望向现有xml文件添加数据,而不必将现有文件加载到momory中

我有一个数据模型:

public class clsPerson
{
    public string FirstName;
    public string LastName;
    public List<string> Likes;
}
公共类clsPerson
{
公共字符串名;
公共字符串LastName;
公开列出喜欢的人;
}
我有一段代码,将两个人添加到一个xml文件中,关闭该文件,然后我想再添加两个人

    static void Main(string[] args)
    {
        List<clsPerson> p1 = new List<clsPerson>();
        p1.Add(new clsPerson { FirstName = "John", LastName = "Dow", Likes = new List<string> { "Apples", "Bananas" } });
        p1.Add(new clsPerson { FirstName = "Jane", LastName = "Dow", Likes = new List<string> { "Football", "Tennis" } });

        string file = @"D:\people.xml";

        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p1.GetType());
        TextWriter tw = new StreamWriter(file);
        x.Serialize(tw, p1);

        tw.Close();           


        List<clsPerson> p2 = new List<clsPerson>();

        p2.Add(new clsPerson { FirstName = "New", LastName = "Guy", Likes = new List<string> { "Reading", "Walking" } });
        p2.Add(new clsPerson { FirstName = "Another", LastName = "Girl", Likes = new List<string> { "Surfing", "Running" } });

        //... i want to add p2 to people.xml without having to load the entire file into memory again
}
static void Main(字符串[]args)
{
列表p1=新列表();
p1.添加(新的clsPerson{FirstName=“John”,LastName=“Dow”,Likes=新列表{“苹果”,“香蕉”});
p1.添加(新的clsPerson{FirstName=“Jane”,LastName=“Dow”,Likes=新的列表{“Football”,“networks”});
字符串文件=@“D:\people.xml”;
System.Xml.Serialization.XmlSerializer x=new System.Xml.Serialization.XmlSerializer(p1.GetType());
TextWriter tw=新的StreamWriter(文件);
x、 序列化(tw,p1);
tw.Close();
列表p2=新列表();
p2.添加(新的clsPerson{FirstName=“new”,LastName=“Guy”,Likes=newlist{“Reading”,“Walking”});
p2.添加(新的clsPerson{FirstName=“other”,LastName=“Girl”,Likes=新列表{“冲浪”,“跑步”});
//…我想将p2添加到people.xml,而不必再次将整个文件加载到内存中
}

我可以通过重新加载文件、将所有节点读入列表并添加新条目来添加这两个新条目,但这似乎效率低下,特别是如果xml中有1000个条目。

如果不将其加载到内存中,您应该如何确定要将条目插入的位置?你的问题对我来说毫无意义。XML是一种特定的节点(元素)格式,要写入它,必须加载它以确定在何处插入新节点。在不加载的情况下,将其转换为纯文本文件,如果这是您需要的,那么就不要使用XML。所以基本上是做不到的?是的,我就是这么说的。“不加载它就是将其转换为纯文本文件。”如果不想将XML用作XML,则不要使用XML::-)