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