【发布时间】:2018-11-28 10:20:09
【问题描述】:
我有两个用于反序列化 XML 文件的类。
XmlExampleBasicUnit.cs:
[YAXSerializeAs("Unit")]
public class XmlExampleBasicUnit
{
[YAXSerializeAs("StringVar")]
public String StringVar { get; set; }
[YAXSerializeAs("Int32Var")]
public Int32 Int32Var { get; set; }
[YAXSerializeAs("DoubleVar")]
public Double DoubleVar { get; set; }
[YAXSerializeAs("DateTimeVar")]
public String DateTimeVar { get; set; }
[YAXSerializeAs("CharVar")]
public String CharVar { get; set; }
}
XmlExampleCollectionOfUnits.cs:
[YAXSerializeAs("CollectionOfUnits")]
public class XmlExampleCollectionOfUnits
{
[YAXSerializeAs("Units")]
public List<XmlExampleBasicUnit> Units { get; set; }
public XmlExampleCollectionOfUnits(List<XmlExampleBasicUnit> units)
{
Units = units;
}
public XmlExampleCollectionOfUnits()
{
}
}
我正在尝试反序列化此文件:
<?xml version="1.0" encoding="utf-8"?>
<CollectionOfUnits>
<Units>
<Unit>
<StringVar>TohleJeString</StringVar>
<Int32Var>24</Int32Var>
<DoubleVar>29.6</DoubleVar>
<DateTimeVar>17.11.1968</DateTimeVar>
<CharVar>c</CharVar>
</Unit>
<Unit>
<StringVar>TohleJeTakéString</StringVar>
<Int32Var>17</Int32Var>
<DoubleVar>5.9</DoubleVar>
<DateTimeVar>06.07.1415</DateTimeVar>
<CharVar>p</CharVar>
</Unit>
<Unit>
<StringVar>NoATohleTaké</StringVar>
<Int32Var>2</Int32Var>
<DoubleVar>78.5</DoubleVar>
<DateTimeVar>06.12.1774</DateTimeVar>
<CharVar>x</CharVar>
</Unit>
</Units>
全部由这个函数处理:
public T Import<T>(String fileName) where T : class
{
YAXSerializer serializer = new YAXSerializer(typeof(T));
return (T)serializer.Deserialize(fileName);
}
当我运行代码时,出现以下错误:No elements with this name found: './Units'. 如您所见,已经有一个名为 Units 的元素。
【问题讨论】:
-
它没有给我任何错误!你是怎么调用
Import函数的? -
谢谢!我已经意识到
Import()函数读取的值不正确。 -
你需要将xml内容传递给
Import函数而不是传递xml文件的路径 -
如果我想使用XML文件的路径怎么办?
-
那么您必须从路径中获取
Import函数中的 xml 内容。让我为你添加一个解决方案
标签: c# xml xml-serialization yaxlib