2013-08-20 65 views
0

嗨我有下面這樣的xmlFile。我的問題是我無法遍歷所有節點。我試過類似這樣的東西。但我認爲它對我來說很難理解。我是如此cunfused如何遍歷XML文件中的所有節點

  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> 

回答

0

您可以使用LINQ到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; 
} 
+0

謝謝卡爾但我已經有了一個關於本教程的Linq to xml示例。我想知道如何處理XmlReader – user2583511