如何遍历XML文件中的所有节点

时间:2013-08-20 18:52:18

标签: asp.net xmlreader

嗨,我有xmlFile,如下所示。我的问题是我无法遍历所有节点。我尝试过这样的事情。但我觉得它对我来说很困难。我是如此的诅咒

           protected void Page_Load(object sender, System.EventArgs e)  
    {
        string xmlFile = Request.PhysicalApplicationPath + @"myxml.xml";  
        XmlReaderSettings settings = new XmlReaderSettings();  
        settings.IgnoreComments = true;  
        settings.IgnoreWhitespace = true;

        using (XmlReader reader = XmlReader.Create(Server.MapPath("myxml.xml"), settings)) {
            while (reader.Read()) {
                string xmlContent = "";
                if (reader.NodeType == XmlNodeType.Element && reader.Name == "Book") {

                    while (reader.NodeType != XmlNodeType.EndElement)
                    {
                        xmlContent += reader.ReadString().ToString();


                    }
                    Label1.Text = xmlContent;
                }

            }

        }

    }  
  

Myxml文件是这样的            

         <books>
               <book>
                   <id>1</id>
                     <name>Photodex ProShow: Visual QuickStart Guide</name>
                      <author>Jon Canfield</author>
                      <price>$29.99</price>
                      <type>Photoshop</type>
                 </book>

             </books>

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ to XML,只需几行即可获取XML文件中的所有元素,如下所示:

XDocument doc = XDocument.Load("PathOfYourXMLFile.xml");

var allElements = doc.Descendants();

注意:doc.Descendants()会返回XElement个对象的集合。

现在您可以获取每个元素的名称,如下所示:

foreach(XElement el in allElements)
{
    var theName = el.Name;
}

同样,您可以获取每个元素的值,如下所示:

foreach(XElement el in allElements)
{
    var theValue = el.Value;
}