簡體   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