XML文件解释和操作

时间:2009-06-24 17:58:49

标签: .net xml xml-serialization

<?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#

请指导我。

2 个答案:

答案 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)
{
    ...
}