//遍历XML
using System;
using System.IO;
using System.Xml;public class Sample {  private const String filename = "items.xml";  public static void Main() {
  
     XmlTextReader reader = null;     try {
       
        // Load the reader with the data file and ignore all white space nodes.         
        reader = new XmlTextReader(filename);
        reader.WhitespaceHandling = WhitespaceHandling.None;        // Parse the file and display each of the nodes.
        while (reader.Read()) {
           switch (reader.NodeType) {
             case XmlNodeType.Element:
               Console.Write("<{0}>", reader.Name);
               break;
             case XmlNodeType.Text:
               Console.Write(reader.Value);
               break;
             case XmlNodeType.CDATA:
               Console.Write("<![CDATA[{0}]]>", reader.Value);
               break;
             case XmlNodeType.ProcessingInstruction:
               Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
               break;
             case XmlNodeType.Comment:
               Console.Write("<!--{0}-->", reader.Value);
               break;
             case XmlNodeType.XmlDeclaration:
               Console.Write("<?xml version='1.0'?>");
               break;
             case XmlNodeType.Document:
               break;
             case XmlNodeType.DocumentType:
               Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
               break;
             case XmlNodeType.EntityReference:
               Console.Write(reader.Name);
               break;
             case XmlNodeType.EndElement:
               Console.Write("</{0}>", reader.Name);
               break;
           }       
        }           
     }     finally {
        if (reader!=null)
          reader.Close();
     }
  }
} // End class

解决方案 »

  1.   

    panyee(快乐王子) :谢谢了,可以用c#帮我写个递归方法?
      

  2.   

    daou101(海天一鸥) :您好!我用XmlTextReader会产生这样一个问题。也就是<root>和</root>他都当不同的结点读两边,返回重复的值。这样就产生了错误。
      

  3.   

    你的意图是什么?先显示里层,然后显示外层?可以用递归,但是在显示控制层采用递归,而不是读取层采用递归,因为XMLReader只会流式处理,除非你用DOM.