【问题标题】:XML-serialization Array of Class类的 XML 序列化数组
【发布时间】:2013-12-01 20:49:36
【问题描述】:

我有两个类 A 和 B。A 用于 ROOT-Element,B 应该是 B 的数组。

public class A
{
    public B[] b;
}

public class B
{
    public string param1;
    public string param2;
}

创建实例并填充数据如下所示:

A test = new A();
test.b = new B[2];

test.b[0] = new B();
test.b[1] = new B();

test.b[0].param1 = "b0-p1";
test.b[0].param2 = "b0-p2";
test.b[1].param1 = "b1-p1";
test.b[1].param2 = "b1-p2";

现在序列化:

System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(A));
System.IO.TextWriter wr = new System.IO.StreamWriter(@"c:\ser.xml");
ser.Serialize(wr, test);
wr.Close();

生成的 XML 如下所示

<?xml version="1.0" encoding="utf-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org /2001/XMLSchema">
  <b>
    <B>
      <param1>b0-p1</param1>
      <param2>b0-p2</param2>
    </B>
    <B>
      <param1>b1-p1</param1>
      <param2>b1-p2</param2>
    </B>
  </b>
</A>

但我想要这个:

<?xml version="1.0" encoding="utf-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org /2001/XMLSchema">
  <b>
    <param1>b0-p1</param1>
    <param2>b0-p2</param2>
  </b>
  <b>
    <param1>b1-p1</param1>
    <param2>b1-p2</param2>
  </b>
</A>

你能告诉我我做错了什么吗?

当面问候

【问题讨论】:

    标签: c# xml arrays serialization


    【解决方案1】:

    XmlElementAttribute装饰B[] b属性:

    public class A
    {
        [XmlElement("b")]
        public B[] b;
    }
    

    您需要在文件顶部添加using System.Xml.Serialization; 才能使其正常工作。

    【讨论】:

    • Thx,我用错误的属性测试了它:System.Xml.Serialization.XmlArray("b")System.Xml.Serialization.XmlArrayItem("b") Thx, thx .. thx
    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多