自定义为 C# 实例生成的 xml
本文关键字:xml 实例 自定义 | 更新日期: 2023-09-27 17:57:03
我在c#中使用XmlSerializer将类实例序列化为xml。默认情况下,如果我序列化以下类的实例:
public class XmlTest
{
public bool b1;
}
布尔字段表示为 <b1>false</b1>
我有具体要求,布尔字段的值表示为<false>
和<true>
中的元素,而不是文本内容。我对枚举字段也有类似的要求。
我尝试使用控制 XML 序列化的属性,但找不到满足我要求的属性。我对 c# 相当陌生,想知道实现这一目标的最佳方法。
不能使用 XML 序列化程序执行此操作。您可以改用 LINQ to XML:
public XElement Serialize(XmlTest t){
return new XElement("XmlTest",
new XElement(t.b1 ? "true" : "false"));
}
关于在代码生成设置中使用 LINQ to XML 的一个提示:XElement
有一个看起来非常简单的构造函数:
public XElement( XName name, Object content )
但这个content
参数几乎可以是任何东西。这包括
- 实现
ToString
的任何类型- 实现
IEnumerable
的任何类型
因此,例如:
XElement xmlTree2 = new XElement("Root", from el in xmlTree1.Elements() where((int)el >= 3 && (int)el <= 5) select el );
可以生产
<Root> <Child3>3</Child3> <Child4>4</Child4> <Child5>5</Child5> </Root>