<?xml version="1.0" encoding="utf-8" ?>
<root>
<MyData>
<MyField>SomeValueHere1</MyField>
<MyComplexData>
<MyComplexDataField1 property="1"></MyComplexDataField1>
<MyComplexDataField2 someproperty"value1"> value1 </MyComplexDataField1>
</MyComplexData>
</MyData>
<MyData>
<MyField>SomeValueHere11</MyField>
<MyComplexData>
<MyComplexDataField1 property="4"></MyComplexDataField1>
<MyComplexDataField2 someproperty="value1"> value2 </MyComplexDataField1>
</MyComplexData>
</MyData>
<MyData>
<MyField>SomeValueHere13</MyField>
<MyComplexData>
<MyComplexDataField1 property="5"></MyComplexDataField1>
<MyComplexDataField2 someproperty="value1"> value </MyComplexDataField1>
</MyComplexData>
</MyData>
.
.
.
.
</root>
我想获取MyData对象的集合(假设可以将MyData对象序列化并反序列化为所提到的XMLNode)
我应该研究哪些System.Xml API? - .Net和C#
请指导我。
答案 0 :(得分:0)
这是.NET 2.0的处理方式 - 使用System.Xml中的XmlDocument。
XmlDocument xdoc = new XmlDocument();
xdoc.Load('(your file name)');
XmlNodeList myDataList = xdoc.SelectNodes('//MyData');
foreach(XmlNode dataNode in myDataList)
{
// do whatever oyu need to do with your myData nodes
}
查看MSDN documentation on the XmlDocument课程。这应该可以让您了解如何处理XML文档。
XML Document方法适用于中小型文档(大小小于几MB),因为它一次将整个文档加载到内存中,并允许您在文档中导航并操作它。 / p>
使用.NET 3.5及更高版本,您可以使用XDocument获得新的“LINQ to XML”方法 - 请查看MSDN documentation on it here。
马克
答案 1 :(得分:0)
如果要使用XML序列化,可以声明类似的内容:
public class root
{
[XmlElement("MyData")]
public List<MyData> Items { get, set }
}
public class MyData
{
...
}
要执行反序列化并遍历MyData对象,请使用以下代码:
XmlSerializer xs = new XmlSerializer(typeof(root));
root r;
using (StreamReader reader = new StreamReader(filename))
{
r = xs.Deserialize(reader) as root;
}
foreach(MyData d in r.Items)
{
...
}