【问题标题】:How to Iterate through all nodes in XML file如何遍历 XML 文件中的所有节点
【发布时间】:2013-08-20 18:52:17
【问题描述】:

嗨,我有如下所示的 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>

【问题讨论】:

    标签: asp.net xmlreader


    【解决方案1】:

    您可以使用 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;
    }
    

    【讨论】:

    • 谢谢 Carl 但我已经有一个关于本教程的 Linq to xml 示例。我想知道如何使用 XmlReader
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多