17

我有一个要序列化的简单类。

 [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 元素添加属性?

提前致谢。

4

4 回答 4

15

您不能将属性添加到 DataContract。您要么必须使用实现 ISerializable 的类,要么使用 .Net XmlSerializer。

于 2009-10-29T14:14:46.210 回答
2

不完全是答案,但您可以尝试实现 IXmlSerializable 以完全控制输出 xml 格式。

于 2009-10-29T14:12:04.687 回答
1

我可以通过声明一个其中定义了属性的 XElement 来实现这一点。前任:

public XElement Text { get; set;}
于 2013-06-16T16:02:29.733 回答
-3

使用 [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; }
    }
}
于 2014-03-17T14:58:31.557 回答