繁体   English   中英

将字段序列化为元素的属性

[英]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>

对我来说,选项是:制作其他类,使用IXmlSerializable等

可能有类似下面的内容吗?

// code not valid
[XmlElement("general")]
[XmlAttribute("name")] 
public strig Name {get;set;}

要获取内部元素,您需要使用XmlElement属性。 因此,如果您创建一个包含XmlAttribute(“ name”)属性的“通用”类。 然后,您可以将其添加到Person类。

[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();
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM