【问题标题】:XML Reader in C#C# 中的 XML 阅读器
【发布时间】:2013-03-22 02:08:55
【问题描述】:

由于我有限的 C# 编程经验,过去 4 天我一直在研究如何读取 XML 文件,但没有成功...我需要帮助。

我知道有 XMLReader、XDocument 以及与 LINQ 相关的东西,可以让您读取 XML 文件。

我只有使用 streamreader 的经验,所以如果一切都失败了,我想我需要使用它来构建自己的 XML 阅读器。

关于我的 XML 文件的结构,它有一个标签,它包含所有内容以及一系列包含许多子节点的其他标签。

不知道该做什么并且没有想法。

谢谢

【问题讨论】:

  • 发布您的 xml 文件内容.. 编写示例代码来读取您的 xml 内容可能很容易。

标签: c# xml xml-parsing linq-to-xml xmlreader


【解决方案1】:

这是您需要的示例。您可以用这种最简单的方法循环遍历 XML 文件。

XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load("sample.xml");

        XmlNodeList name = xmldoc.GetElementsByTagName("name");
        XmlNodeList price = xmldoc.GetElementsByTagName("price");
        XmlNodeList description = xmldoc.GetElementsByTagName("description");
        XmlNodeList calories = xmldoc.GetElementsByTagName("calories");


        for (int i = 0; i < name.Count; i++)
        {
            Console.WriteLine(name[i].InnerText);
            Console.WriteLine("Price: " + price[i].InnerText);
            Console.WriteLine(description[i].InnerText);
            Console.WriteLine("calories: " + calories[i].InnerText);
        }

        Console.ReadKey();

【讨论】:

    【解决方案2】:

    所有这些用于读取和解析 XML 的类都有不同的用途。

    使用XDocument(LINQ 风格)将产生一段更易读的代码,但会比XmlTextReader 消耗更多的内存。

    如果您正在处理大文件,请使用 XmlReader 类。

    XmlReader example on MSDN

    XDocument examples on dotnetcurry

    我个人从不喜欢 XmlDocument 类,因为冗长的代码迫使我编写。这就是我。

    【讨论】:

      【解决方案3】:

      您可以使用 XmlTextReader。

       using (XmlTextReader xmlTextReader = new XmlTextReader("FILE_NAME.xml"))
       {
          while (xmlTextReader.Read())
          {
              switch (xmlTextReader.NodeType)
              {
                  // ... Process node types here ex. XmlNodeType.Element
              }
           }
       }
      

      阅读更多: http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx

      但是 XmlTextReader 不验证数据,所以如果你想验证你的数据使用 XmlReader: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx

      【讨论】:

      • 我完全忘记了 XmlTextReader:-)
      【解决方案4】:

      最简单的方法是使用XDocument。例如:

      <myroot>
          <somesub>1</somesub>
          <somesub>2</somesub>
          <somesub>3 <b>- or -</b> 4</somesub>
      </myroot>
      

      然后:

      string path = @"myfile.xml";
      var doc = XDocument.Load(path);
      
      // Get the root node <myroot>
      var root = doc.Root;
      
      // Loop through the children and print each one's value:
      foreach(var child in root.Elements())
      {
          Console.WriteLine(child.Value);
      }
      

      查看XElementXDocument 的文档,了解有关他们拥有的成员的更多想法和信息。

      【讨论】:

      • 我打算做的是读取 xml 中的数据,“1,2,3”(使用上面的示例),然后将这些值放入列表、变量或数组。
      • 好吧,我已经向您展示了如何读取元素的值。现在你的工作就是考虑如何将字符串放入列表中。这是一个全新的问题,并不难做到。
      • 道歉只是玩了一会儿,我想我现在走在正确的轨道上,非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多