我有一个简单的课程:
public class A
{
public string Property { get; set; }
}
我在序列化时想要:
<NodeSurrounded>
<A>
<Property>value</Property>
</A>
</nodeSurrounded>
我有义务添加一个额外的类来添加节点NodeSurrounded?
答案 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;
}