XML序列化部分定制

时间:2014-12-16 10:53:26

标签: c# xml

简而言之,我需要的是部分定制类项目

public class project : IXmlSerializable
{
    [XmlAttribute]
    public string name;
    [XmlIgnore]
    public string[] contents;
    public XmlSchema GetSchema()
    {
        return null;
    }

  public void ReadXml(XmlReader reader)
  {
      if (reader.HasAttributes)
      {
          contents=new string[reader.AttributeCount];
          for (int i = 0; i < reader.AttributeCount; i++)
          {
              reader.MoveToAttribute(i);
              string attr = reader.Name;
              Regex reg = new Regex(@"content_\d+");
              if (reg.IsMatch(attr))
              {
                  contents[i] = reader.Value;
              }
          }
      }
  }

  public void WriteXml(XmlWriter writer)
  {
      for (int i = 0; i < contents.Count(); i++)
      {
          writer.WriteAttributeString("content_" + i, contents[i]);
      }
  }
}

我希望名称正常序列化,但只定制数组的内容(我需要将其作为项目节点中的属性)。 实际发生的事情是,当我实现项目类时,名称保持为null无论我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

ReadXml方法中,您永远不会分配name属性。只需添加

name= "someValue";