我有一个以下列方式编写的课程:
[XmlRoot]
public class MyXMLElement
{
[XmlAttribute]
public string AnAttribute { get; set; }
[XmlAttribute]
public string AnotherElementAttribute { get; set; }
}
当这是序列化时,我想设置它的值,所以我得到如下内容:
<MyXMLElement AnAttribute="something" AnotherElementAttribute="something else">The inner value of the element</MyXMLElement>
有人有想法吗?
答案 0 :(得分:1)
如果要设置元素的值,可以使用[XmlText]
属性:
[XmlRoot]
public class MyXMLElement
{
[XmlAttribute]
public string AnAttribute { get; set; }
[XmlAttribute]
public string AnotherElementAttribute { get; set; }
[XmlText]
public string Value { get; set; }
}
答案 1 :(得分:0)
添加另一个属性来保存内部文本并使用XmlTextAttribute
标记它[XmlRoot]
public class MyXMLElement
{
[XmlAttribute]
public string AnAttribute { get; set; }
[XmlAttribute]
public string AnotherElementAttribute { get; set; }
[XmlText]
public string InnerText { get; set; }
}
答案 2 :(得分:0)
如果您编写自己的序列化程序,可以非常轻松地完成此操作(下面的示例)。 这也可以让您完全控制对象的持久性,而不是依赖于.NET决定如何执行它。
interface IXmlConvertable{
XElement ToXml();
}
public class MyClass : IXmlConvertable{
public string Name { get; set; }
public string ID { get; set; }
public XElement ToXml(){
var retval = new XElement("MyClass"
, new XAttribute("Name", new XCData(Name))
, new XAttribute("ID", new XCData(ID))
);
return retval;
}
}