C# 在序列化中添加节点

C# 在序列化中添加节点,c#,xml,serialization,C#,Xml,Serialization,我有一个简单的课程: public class A { public string Property { get; set; } } 我想在序列化时: <NodeSurrounded> <A> <Property>value</Property> </A> </nodeSurrounded> 价值 我必须添加一个额外的类来添加节点周围的节点?您可以创建一个新节点。 然后使用 XmlNo

我有一个简单的课程:

public class A
{
    public string Property { get; set; }
}
我想在序列化时:

<NodeSurrounded>
   <A>
      <Property>value</Property>
   </A>
</nodeSurrounded>

价值

我必须添加一个额外的类来添加节点周围的节点?

您可以创建一个新节点。 然后使用 XmlNode.AppendChild


要附加到节点周围的节点,可以创建一个新节点。 然后使用 XmlNode.AppendChild


要附加到节点周围的节点,我将在类中创建一个
ToXML()
和一个
FromXML()
方法

public string ToXML()
{
    return new XDocument(
                new XElement("NodeSurrounded"),
                    new XElement("A", this.Property)).ToString();
}

public void FromXML(string xml)
{
    var document = XDocument.Parse(xml);
    this.Property = document.Root.Element("A").Element("Property").Value;
}

我将在类中创建一个
ToXML()
和一个
FromXML()
方法

public string ToXML()
{
    return new XDocument(
                new XElement("NodeSurrounded"),
                    new XElement("A", this.Property)).ToString();
}

public void FromXML(string xml)
{
    var document = XDocument.Parse(xml);
    this.Property = document.Root.Element("A").Element("Property").Value;
}
试试下面的方法

A a = new A { Property = "value" };
var xs = new XmlSerializer(typeof(A));

using (var xmlWriter = XmlWriter.Create("test.xml"))
{
    xmlWriter.WriteStartElement("NodeSurrounded");
    xs.Serialize(xmlWriter, a);
    xmlWriter.WriteEndElement();
}
我们手动添加xml节点

然后,在反序列化时,我们还必须手动绕过此节点

using (var xmlReader = XmlReader.Create("test.xml"))
{
    xmlReader.ReadToFollowing("A");
    a = (A)xs.Deserialize(xmlReader);
}
试试下面的方法

A a = new A { Property = "value" };
var xs = new XmlSerializer(typeof(A));

using (var xmlWriter = XmlWriter.Create("test.xml"))
{
    xmlWriter.WriteStartElement("NodeSurrounded");
    xs.Serialize(xmlWriter, a);
    xmlWriter.WriteEndElement();
}
我们手动添加xml节点

然后,在反序列化时,我们还必须手动绕过此节点

using (var xmlReader = XmlReader.Create("test.xml"))
{
    xmlReader.ReadToFollowing("A");
    a = (A)xs.Deserialize(xmlReader);
}

我认为OP希望使用内置的XML序列化(即XMLSerializer)。创建
ToXML
FromXML
方法可以实现任何东西,但如果我没有错的话,他希望避免这种编码并使用一些.NET代码。我认为OP希望使用内置的XML序列化(即XMLSerializer)。创建
ToXML
FromXML
方法可以实现任何东西,但如果我没有错的话,他希望避免这种编码并使用一些.NET代码。序列化使用什么?XmlSerializer+StreamWriter序列化使用什么?XmlSerializer+StreamWriter