Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将元素添加到数组中_C#_Xml_Xmlserializer - Fatal编程技术网

C# 将元素添加到数组中

C# 将元素添加到数组中,c#,xml,xmlserializer,C#,Xml,Xmlserializer,我有一个类Person和一个对象,它是列表 此列表是XML序列化的。结果是: <?xml version="1.0" encoding="utf-16"?> <ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd... (etc) <Person> <Id>0</Id> <Name>Person 0</N

我有一个类
Person
和一个对象,它是
列表

此列表是XML序列化的。结果是:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd... (etc)
  <Person>
    <Id>0</Id>
    <Name>Person 0</Name>
    <Birthday>2000-01-01T00:00:00</Birthday>
  </Person>
  <Person>
     ...
  </Person>
  <Person>
     ...
  </Person>
</ArrayOfPerson>
Person myPerson = ...
XElement xmlPerson = XElement.ToXml<Person>(myPerson);
还是我必须自己写

或者有更好的方法吗?

使用XML LINQ:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace ConsoleApplication1
{
    public class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        private static void Main()
        {
            StreamReader reader = new StreamReader(FILENAME);
            reader.ReadLine(); //skip the unicode encoding in the ident

            XDocument doc = XDocument.Load(reader);
            XElement arrayOfPerson = doc.Descendants("ArrayOfPerson").FirstOrDefault();

            arrayOfPerson.Add(new XElement("Person"), new object[] {
                new XElement("Id", 0),
                new XElement("Name", "Person 0"),
                new XElement("Birthday", DateTime.Now.ToLongDateString()),
            });
        }
    }
}

为什么要一直保持XML的同步?为什么不在你需要的时候按需生成它呢?我一点也不知道你的意思。我有一个几千人的XML文件。我的类接收到一个新人,需要将其添加到XML文件中。我不确定同步部分是什么。你添加一个。然后更新XML。现在添加另一个。然后更新XML。等等我在问为什么每次添加后都要更新XML?只需在需要时生成一次,而不是在每次添加后生成。当然,有一种方法可以在不反序列化XML的情况下添加它。您可以将单个
Person
对象序列化为
MemoryStream
。然后在
之前手动插入结果。mjwills:现在我明白你的意思了。我的软件是一种每天接收一次确认信息的服务,即我们公司提供了一些信息。简单地说,我称之为人。实际上,信息的结构要复杂得多。因此,每天我必须在我的“人”数组中添加一个收到的“人”