将字段序列化为元素的属性
Serialize field as attribute of an element
我有
[XmlRoot("root")]
class Person
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
连载后我会得到:
<root name="...">
</root>
任何简单的获取方式
<root>
<general name="...">
</root>
?
我的选择是:制作其他 class、使用 IXmlSerializable 等
有可能像下面这样吗?
// code not valid
[XmlElement("general")]
[XmlAttribute("name")]
public strig Name {get;set;}
要获取内部元素,您需要使用 XmlElement 属性。因此,如果您创建一个包含 XmlAttribute("name") 属性 的 'general' class。然后你可以将它添加到你的 Person class.
[XmlRoot("root")]
class Person
{
[XmlElement("general")]
public General General {get; set;}
}
class General
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
我想我会继续使用 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();
}
}
我有
[XmlRoot("root")]
class Person
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
连载后我会得到:
<root name="...">
</root>
任何简单的获取方式
<root>
<general name="...">
</root>
?
我的选择是:制作其他 class、使用 IXmlSerializable 等
有可能像下面这样吗?
// code not valid
[XmlElement("general")]
[XmlAttribute("name")]
public strig Name {get;set;}
要获取内部元素,您需要使用 XmlElement 属性。因此,如果您创建一个包含 XmlAttribute("name") 属性 的 'general' class。然后你可以将它添加到你的 Person class.
[XmlRoot("root")]
class Person
{
[XmlElement("general")]
public General General {get; set;}
}
class General
{
[XmlAttribute("name")]
public strig Name {get;set;}
}
我想我会继续使用 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();
}
}