DataContractを使用してXML属性を追加する方法
-
10-07-2019 - |
質問
シリアル化する単純なクラスがあります。
[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; }
}
}
所属していません StackOverflow