【问题标题】:XMLSerializer for Array of Objects对象数组的 XMLSerializer
【发布时间】:2019-04-10 14:27:21
【问题描述】:

我有以下 XML:

<SQLToData>
  <PreProcessors>
    <PreProcessor>
      <Name>Input1</Name>
      <Expression>1 == a</Expression>
    </PreProcessor>
  </PreProcessors>
  <DataSource>
    <Type>SQLServer</Type>
    <ConnectionString>Data Source=****</ConnectionString>
  </DataSource>
  <SQL>
    SELECT * FROM TABLE
  </SQL>
  <ReturnType>DataTable</ReturnType>
</SQLToData>

还有以下 C# 类:

public class SQLToData
{
    public SQLToDataDataSource DataSource { get; set; }
    [XmlArray("PreProcessors")]
    public SQLToDataPreProcessor[] PreProcessors { get; set; }
    public string SQL { get; set; }
    public string ReturnType { get; set; }
}

[XmlRoot("DataSource")]
public class SQLToDataDataSource
{
    public string Type { get; set; }
    public string ConnectionString { get; set; }
}

[XmlRoot("PreProcessor")]
public class SQLToDataPreProcessor
{
    public string Name { get; set; }
    public string Expression { get; set; }
}

我这样调用序列化器:

XDocument xml = XDocument.Load(xmlPath);

XmlSerializer inputSerializer = new XmlSerializer(typeof(SQLToData));
XElement xmlElement = xml.XPathSelectElement("/SQLToData");

SQLToData config;
using (TextReader reader = new StringReader(xmlElement.ToString()))
{
    config = (SQLToData)inputSerializer.Deserialize(reader);
}

但是,我没有在数组中获取PreProcessors 的数据。

我的配置有什么问题?

【问题讨论】:

    标签: c# xml xml-serialization


    【解决方案1】:

    发现问题。我错过了XmlArrayItem 标签。

    public class SQLToData
    {
        public SQLToDataDataSource DataSource { get; set; }
        [XmlArray("PreProcessors")]
        [XmlArrayItem("PreProcessor")]
        public SQLToDataPreProcessor[] PreProcessors { get; set; }
        public string SQL { get; set; }
        public string ReturnType { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-05-16
      • 2010-11-02
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多