我有两节课:
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吗?
答案 0 :(得分:0)
您拥有的一个选择是,将类SomeName
中的A
属性声明为B
类型的对象的集合,然后使用[XmlArray]
和{{ 1}}属性。
这是一个可行的示例。请注意,我已将属性[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);
}