[英]Xml serialization add element with properties
我有兩節課:
public class A
{
[XmlElement("Content")]
public B SomeName { get; set; }
}
public class B
{
[XmlAttribute]
public int X { get; set; }
}
它像這樣序列化為xml:
<A>
<Content X="5" />
</A>
我想在Content中指定元素名稱並得到類似的東西
<A>
<Content>
<Some element X="5" />
</Content>
</A>
我是否可以在不創建新類的情況下執行此操作,將使用標准xml序列化包含B?
你有一個選擇是將申報SomeName
類屬性A
類型的對象的集合B
再利用的[XmlArray]
和[XmlArrayItem]
屬性。
這是一個有效的例子。 請注意,我將屬性SomeName
更改為SomeNames
。
[Serializable]
public class A
{
[XmlArray("Content")]
[XmlArrayItem("Some")]
public List<B> SomeNames { get; set; } = new List<B>();
}
public class B
{
[XmlAttribute(AttributeName = "element")]
public int X { get; set; }
}
public static void XmlSerialize()
{
var a = new A {SomeNames = new List<B> {new B() {X = 5}}};
var serializer = new XmlSerializer(typeof(A));
var settings = new XmlWriterSettings() {Indent = true};
using var stream = XmlWriter.Create("serialized.xml", settings);
serializer.Serialize(stream, a);
}
此示例生成的結果將符合您的要求:
<?xml version="1.0" encoding="utf-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Content>
<Some element="5" />
</Content>
</A>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.