我有以下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
的数组中获取数据。
我的配置有什么问题?
答案 0 :(得分: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; }
}