C# 如何从XML中获取整个数组记录

C# 如何从XML中获取整个数组记录,c#,xml,linq,C#,Xml,Linq,我尝试使用Linq从Xml中获取所有数组记录,但它获取了错误对象null,我成功地获取了单个数组,但无法获取多个类似Xml文件的数组 c#文件 这是我从XML获取记录数组的代码 XML文件 <Financial> <CoreFinancial> <FieldTypeEnum>0</FieldTypeEnum> <IsGpBasedRiskOrder>true</IsGpBasedRiskOrde

我尝试使用Linq从Xml中获取所有数组记录,但它获取了错误对象null,我成功地获取了单个数组,但无法获取多个类似Xml文件的数组

c#文件

这是我从XML获取记录数组的代码

XML文件

  <Financial>
    <CoreFinancial>
      <FieldTypeEnum>0</FieldTypeEnum>
      <IsGpBasedRiskOrder>true</IsGpBasedRiskOrder>
      <IsMultiSelect>false</IsMultiSelect>
      <LableText>Risk Currency</LableText>
      <MappingOptions></MappingOptions>
      <MappingOptionsColumns></MappingOptionsColumns>
      <MappingType>3</MappingType>
      <SchemaField>RiskCurrrency</SchemaField>
      <Value>GBP</Value>
      <ErrCount>0</ErrCount>
      <valueError>false</valueError>
    </CoreFinancial>
    <CoreFinancial>
      <FieldTypeEnum>1</FieldTypeEnum>
      <IsGpBasedRiskOrder>true</IsGpBasedRiskOrder>
      <IsMultiSelect>false</IsMultiSelect>
      <LableText>Premium Currenc</LableText>
      <MappingOptions></MappingOptions>
      <MappingOptionsColumns></MappingOptionsColumns>
      <MappingType>3</MappingType>
      <SchemaField>PremiumCurrency</SchemaField>
      <Value>GBP</Value>
      <ErrCount>0</ErrCount>
      <valueError>false</valueError>
    </CoreFinancial>
    <CoreFinancial>
      <FieldTypeEnum>3</FieldTypeEnum>
      <IsGpBasedRiskOrder>true</IsGpBasedRiskOrder>
      <IsMultiSelect>true</IsMultiSelect>
      <LableText>Gross Premium</LableText>
      <MappingOptions></MappingOptions>
      <MappingOptionsColumns type="Array">
        <value>Gross Premium</value>
        <value>Address 1</value>
      </MappingOptionsColumns>
      <MappingType>5</MappingType>
      <SchemaField>GrossPremium</SchemaField>
      <Value></Value>
      <ErrCount>0</ErrCount>
      <valueError>false</valueError>
    </CoreFinancial>

  </Financial>

0
真的
假的
风险货币
3.
风险货币
英镑
0
假的
1.
真的
假的
高级货币
3.
前置电流
英镑
0
假的
3.
真的
真的
总保费
总保费
地址1
5.
罗缎
0
假的
错误图像


.Net还有另一种反序列化xml的方法

1) 使用或可以使用联机工具生成xml的结构

对于xsd方法*,使用cmd生成xsd:

xsd foo.xml

xsd foo.xsd/classes

2) 将xml类带到project中

public class CoreFinancial {
    public string FieldTypeEnum { get; set; }
    public string IsGpBasedRiskOrder { get; set; }
    public string IsMultiSelect { get; set; }
    public string LableText { get; set; }
    public string MappingOptions { get; set; }
    public string MappingType { get; set; }
    public string SchemaField { get; set; }
    public string Value { get; set; }
    public string ErrCount { get; set; }
    public string ValueError { get; set; }
    public MappingOptionsColumns MappingOptionsColumns { get; set; }
}

public class MappingOptionsColumns {
    [XmlElement(ElementName="value")]
    public List<string> Value { get; set; }
    [XmlAttribute(AttributeName="type")]
    public string Type { get; set; }
}

public class Financial {
    public List<CoreFinancial> CoreFinancial { get; set; }
}

.Net有另一种反序列化xml的方法

1) 使用或可以使用联机工具生成xml的结构

对于xsd方法*,使用cmd生成xsd:

xsd foo.xml

xsd foo.xsd/classes

2) 将xml类带到project中

public class CoreFinancial {
    public string FieldTypeEnum { get; set; }
    public string IsGpBasedRiskOrder { get; set; }
    public string IsMultiSelect { get; set; }
    public string LableText { get; set; }
    public string MappingOptions { get; set; }
    public string MappingType { get; set; }
    public string SchemaField { get; set; }
    public string Value { get; set; }
    public string ErrCount { get; set; }
    public string ValueError { get; set; }
    public MappingOptionsColumns MappingOptionsColumns { get; set; }
}

public class MappingOptionsColumns {
    [XmlElement(ElementName="value")]
    public List<string> Value { get; set; }
    [XmlAttribute(AttributeName="type")]
    public string Type { get; set; }
}

public class Financial {
    public List<CoreFinancial> CoreFinancial { get; set; }
}

我想把记录数组存储在一个列表中,‘error object null’是什么意思?你是说例外吗?如果是,请包括exception.ToString()。另外,向我们展示发生异常的代码行Image@user6254141如果您的代码使用的是粘贴在这里的精确XML,
您的代码工作正常,我也可以看到结果。我猜你在
foreach
循环中做错了什么?你到底需要什么。我想把记录数组存储在一个列表中“error object null”是什么意思?你是说例外吗?如果是,请包括exception.ToString()。另外,向我们展示发生异常的代码行Image@user6254141如果您的代码使用的是粘贴在这里的精确XML,
您的代码工作正常,我也可以看到结果。我猜你在
foreach
循环中做错了什么吗?谢谢,它工作了谢谢,它工作了
XmlSerializer ser = new XmlSerializer(typeof(Financial));
Financial finlist;
using (XmlReader reader = XmlReader.Create(path)) //Path to your xml with filename
{
    finlist = (Financial) ser.Deserialize(reader);
}
foreach (var item in finlist) {
            //use item and do whatever your wants
        }