0

こんにちは、私は以下のような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>
4

1 に答える 1

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;
}
于 2013-08-20T19:28:00.840 に答える