可以将元素属性映射为成员吗?

时间:2012-03-02 10:58:23

标签: c# .net xml-serialization

有人知道是否有可能将元素属性映射到父类/结构成员?

示例:

<parent>
    <child id="1">
</parent>

我想让它像这样直接映射:

public class parent
{
    public int id;
}

提前致谢

更新: 我没有明确说明,我正在寻找一个基于解决方案属性的解决方案,我可以使用XmlSerializer。

1 个答案:

答案 0 :(得分:0)

您将不得不实施自己的IXmlSeriazliable界面。

http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx

这是一个粗略的例子:

    public class parent : IXmlSerializable
    {
        public int id { get; set; }

        public XmlSchema GetSchema()
        {
            throw new NotImplementedException();
        }

        public void ReadXml(XmlReader reader)
        {
            while (reader.Read())
            {
                if (reader.Name == "child")
                {
                    int parseValue;
                    int.TryParse(reader.Value, out parseValue);
                    this.id = parseValue;
                }
            }
        }

        public void WriteXml(XmlWriter writer)
        {
            writer.WriteStartElement("parent");
            writer.WriteStartElement("child");
            writer.WriteAttributeString("id", this.id.ToString());
            writer.WriteEndElement();
            writer.WriteEndElement();                
        }
    }

这应该适用于XmlSerializer。