【问题标题】:Mapping elements attribute as member possible?将元素属性映射为可能的成员?
【发布时间】:2012-03-02 10:58:22
【问题描述】:

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

例子:

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

我希望它像这样直接映射:

public class parent
{
    public int id;
}

提前致谢

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

【问题讨论】:

  • 父母总是只有 1 个孩子?

标签: c# .net xml-serialization


【解决方案1】:

您将不得不实现自己的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。

【讨论】:

  • 感谢您的提示,我可以用它解决更复杂的情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2011-11-28
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多