【发布时间】:2021-11-17 12:28:50
【问题描述】:
有xml文件,结构如下:
<?xml version="1.0"?>
<myobjectlist objectCount = "3">
<myobject Number = "0" Name="My First Object" MyChildObectsCount = "2">
<intProp>5</intProp>
<stringProp>Str1</stringProp>
<doubleProp>35.1</doubleProp>
<MyChildObj Number = "100" Name = "My first child object">
<childIntProp>1</childIntProp>
<childStringProp>CStr1</childStringProp>
</MyChildObj>
<MyChildObj Number = "120" Name = "My child object">
<childIntProp>15</childIntProp>
<childStringProp>CStr2</childStringProp>
</MyChildObj>
</myobject>
<myobject Number = "145" Name="My second Object" MyChildObectsCount = "1">
<intProp>96</intProp>
<stringProp>Str2</stringProp>
<doubleProp>+Inf</doubleProp>
<MyChildObj Number = "250" Name = "This's child object">
<childIntProp>62</childIntProp>
<childStringProp>CStr3</childStringProp>
</MyChildObj>
</myobject>
<myobject Number = "261" Name="My last Object" MyChildObectsCount = "3">
<intProp>9</intProp>
<stringProp>Str45</stringProp>
<doubleProp>1.6449635e+07</doubleProp>
<MyChildObj Number = "150" Name = "Almost last child object">
<childIntProp>-1</childIntProp>
<childStringProp>CStr41</childStringProp>
</MyChildObj>
<MyChildObj Number = "680" Name = "Prelast child object">
<childIntProp>72</childIntProp>
<childStringProp>CStr42</childStringProp>
</MyChildObj>
<MyChildObj Number = "127" Name = "Last child object">
<childIntProp>64</childIntProp>
<childStringProp>CStr222</childStringProp>
</MyChildObj>
</myobject>
</myobjectlist>
我尝试使用 XMLSerializer,但我发现它无法反序列化列出,列表的所有对象都将是可反序列化 xml 的第一个对象,所以我的结果列表将包含第 0 个 obj 的 ObjCount。
我已经创建了类——比如说 xml 对象的实体
public class MyObject{
int Number;
string Name;
int IntProp;
string stringProp;
double doubleProp;
List<MyChildObject> myChildObjects;
}
public class MyChildObject{
int Number;
string Name;
int childIntProp;
string childStringProp;
}
我需要从 XML 文件中获取 List<MyObject>,但我不想逐个节点地解析它。有什么聪明的方法吗?
更新
在这里,我得到了什么:Empty list
【问题讨论】:
-
你能解释一下“列表中的所有对象都将成为可反序列化 xml 的第一个对象”的意思吗?
-
您将需要以一种或另一种方式反序列化它
-
请提供有效的 XML 和有效的 C# 类。你知道,可以编译的东西和可以被 XML 解析器读取的 XML。这将使我们更容易理解您的问题并为您提供数量级的帮助。
-
^^ 或者换一种说法:请提供minimal reproducible example
-
我已更改示例以尝试对应于最小可重现示例。
标签: c# xml xml-parsing deserialization