質問

シリアル化する単純なクラスがあります。

 [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要素に属性を追加するにはどうすればよいですか

事前に感謝します。

役に立ちましたか?

解決

DataContractに属性を追加することはできません。 ISerializableを実装するクラスを使用するか、.Net XmlSerializerを使用する必要があります。

他のヒント

正確な答えではありませんが、IXmlSerializableを実装して、出力XML形式を完全に制御できます。

属性が定義されているXElementを宣言することでこれを達成できました。例:

public XElement Text { get; set;}

[XMLAttribute]を使用してtype属性を追加し、[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; }
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top