如何使用 DataContract 添加 XML 属性
Posted
技术标签:
【中文标题】如何使用 DataContract 添加 XML 属性【英文标题】:How do I add an XML attribute using DataContract 【发布时间】:2010-12-11 06:27:08 【问题描述】:我正在序列化一个简单的类。
[DataContract(Name = "Test", Namespace = "")]
public class Test
[DataMember(Order = 0, Name = "Text")]
public string Text get; set;
public Test()
这会踢出以下 XML:
<Test>
<Text>Text here</Text>
</Test>
我想要的是:
<Test>
<Text type="MyType">Text here</Text>
</Test>
如何为 XML 元素添加属性?
提前致谢。
【问题讨论】:
【参考方案1】:您不能将属性添加到 DataContract。您要么必须使用实现 ISerializable 的类,要么使用 .Net XmlSerializer。
【讨论】:
根据执行序列化的系统,可以执行 OP 要求的操作 - 请参阅:***.com/questions/4858798/…【参考方案2】:不完全是答案,但您可以尝试实现 IXmlSerializable 以完全控制输出 xml 格式。
【讨论】:
【参考方案3】:我可以通过声明一个其中定义了属性的 XElement 来实现这一点。例如:
public XElement Text get; set;
【讨论】:
代码[DataMember(Name = "test")] public XElement test = new XElement("Root", new List<string>() "1", "2", "3" );
产生<test> <Root xmlns="">123</Root> </test>
这可能不是quenstioner 的本意【参考方案4】:
用[XMLAttribute]添加类型属性,用[XmlText]添加元素值。
public class Test
public text Text;
public Test()
Text = new text();
[DataContract(Name = "Test", Namespace = "")]
public class text
[XmlText]
public string Text get; set;
[XmlAttribute]
public string type get; set;
【讨论】:
我试过了,没有得到 Text 也没有输入序列化以上是关于如何使用 DataContract 添加 XML 属性的主要内容,如果未能解决你的问题,请参考以下文章