【问题标题】:XML file interpretation and manipulationsXML 文件解释和操作
【发布时间】:2009-06-24 17:58:49
【问题描述】:
<?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#

请指导我。

【问题讨论】:

    标签: .net xml xml-serialization


    【解决方案1】:

    如果你想使用 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)
    {
        ...
    }
    

    【讨论】:

      【解决方案2】:

      这是 .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 文档方法非常适合中小型文档(小于几 MByte),因为它将整个文档一次加载到内存中,并允许您在文档中导航和操作它。

      在 .NET 3.5 及更高版本中,您可以使用 XDocument 获得新的“LINQ to XML”方法 - 查看MSDN documentation on it here

      马克

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 2017-11-08
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        相关资源
        最近更新 更多