[英]Serialize field as attribute of an element
I have 我有
[XmlRoot("root")]
class Person
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
After serialization I will get: 序列化后,我将得到:
<root name="...">
</root>
Any simple way to get 任何简单的获取方法
<root>
<general name="...">
</root>
? ?
Options for me are: make other class, using IXmlSerializable, etc 对我来说,选项是:制作其他类,使用IXmlSerializable等
It's posible to have something like below ? 可能有类似下面的内容吗?
// code not valid
[XmlElement("general")]
[XmlAttribute("name")]
public strig Name {get;set;}
To get an element inside you need to use the XmlElement attribute. 要获取内部元素,您需要使用XmlElement属性。 So if you create a 'general' class containing an XmlAttribute("name") property.
因此,如果您创建一个包含XmlAttribute(“ name”)属性的“通用”类。 You can then add this to your Person class.
然后,您可以将其添加到Person类。
[XmlRoot("root")]
class Person
{
[XmlElement("general")]
public General General {get; set;}
}
class General
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
I think I will stay with IXmlSerializable, as: 我想我将继续使用IXmlSerializable,如下所示:
[XmlRoot("root")]
class Person : IXmlSerializable
{
[XmlAttribute("name")]
public string Name {get;set;}
public System.Xml.Schema.XmlSchema GetSchema() {
return null;
}
public void ReadXml( XmlReader reader ) {
...
}
public void WriteXml( XmlWriter writer ) {
writer.WriteStartElement( "root" );
writer.WriteStartElement( "general", null );
writer.WriteAttributeString( "action", Action );
...
writer.WriteEndElement();
writer.WriteEndElement();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.