在序列化中添加节点

时间:2016-05-17 19:06:19

标签: c# xml serialization

我有一个简单的课程:

public class A
{
    public string Property { get; set; }
}

我在序列化时想要:

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

我有义务添加一个额外的类来添加节点NodeSurrounded?

3 个答案:

答案 0 :(得分:2)

尝试以下方法

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);
}

答案 1 :(得分:0)

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

附加到NodeSurrounded节点

答案 2 :(得分:0)

我会在你的课程中创建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;
}