2017-03-10 8 views
-2
<CustomerOrders> 
    <Customers> 
    <CustomerID>ALFKI</CustomerID> 
    <Orders> 
     <OrderID>10643</OrderID> 
     <CustomerID>ALFKI</CustomerID> 
     <OrderDate>1997-08-25</OrderDate> 
    </Orders> 
    <Orders> 
     <OrderID>10692</OrderID> 
     <CustomerID>ALFKI</CustomerID> 
     <OrderDate>1997-10-03</OrderDate> 
    </Orders> 
    <CompanyName>Alfreds Futterkiste</CompanyName> 
    </Customers> 
    <Customers> 
    <CustomerID>ANATR</CustomerID> 
    <Orders> 
     <OrderID>10308</OrderID> 
     <CustomerID>ANATR</CustomerID> 
     <OrderDate>1996-09-18</OrderDate> 
    </Orders> 
    <CompanyName>Ana Trujillo Emparedados y helados</CompanyName> 
    </Customers> 
</CustomerOrders> 

OrderID、CustomerID、OrderDateはどのように取得しますか?私はすでに数時間それを試しています。誰か助けてくれますか?ありがとう!ネストしたノードからxmlデータを取得する方法

XmlNodeList xmlnode = doc.GetElementsByTagName("Customers"); 
HtmlGenericControl div = new HtmlGenericControl("div"); 
for(int i = 0; i < xmlnode.Count; i++) 
{ 
    Label lbl2 = new Label(); 
    lbl2.Text = xmlnode[i].ChildNodes[1].Name; 
    div.Controls.Add(lbl2); 
    RadioButtonList rb1 = new RadioButtonList(); 
    rb1.Items.Add(xmlnode[i].ChildNodes[1].InnerText+"<br>"); 
    div.Controls.Add(rb1); 
} 
div1.Controls.Add(div); 
+1

を使用していますか? – Jens

+0

私は.childnodesを試しました。しかし、私が得ることは、彼らがすべて一緒に固執することです。 –

+0

私はRadioButtonListにorderID、CustomerID、OrderDateを設定します。 (私はそれが意味をなさないことを知っています。そのちょうど練習) –

答えて

0
XmlDocument doc = new XmlDocument(); 
       doc.LoadXml("yourxmldata"); 

       XmlNodeList customers = doc.DocumentElement.SelectNodes("Customers"); 

       foreach (XmlNode customer in customers) 
       { 
        XmlNodeList customerOrders = customer.SelectNodes("Orders"); 

        string customername = customer["CustomerID"].InnerText; 

        foreach (XmlNode customerOrder in customerOrders) 
        { 
         string orderid = customerOrder["OrderID"].InnerText; 
         string orderdate = customerOrder["OrderDate"].InnerText; 
        } 

       } 
+0

ありがとうございます。わたしは、あなたを愛しています。 –

1

あなたはXDocumentクラスとそのファミリー・ツリーを使用することができます。 XPath式を使用すると、コードをさらに詳しく調べることができます。

using System.Xml.Linq 
using System.Xml.XPath 

.... 
XDocument doc= XDocument.Load("sample.xml"); 
XElement root= doc.Element("CustomerOrders"); 
var result= root.XPathSelectElements("Customers/CustomerId"); 
foreach(var customerid in result) 
    { 
    ..... 
    } 

あなたが達成したいことに応じて、これは正しい軌道に乗るはずです。私が答えを入力している間、別の答えは、XmlDocumentクラスを使用することを提案します。これもうまくいくはずですが、XDocumentを使うときは、Linqを使うことができます。これは柔軟性が増します。ここで

0

はすべてがあなたがこれまでに試してみました何のXml LINQの

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication47 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILENAME); 

      var results = doc.Descendants("Customers").Select(x => new 
      { 
       customerID = (string)x.Element("CustomerID"), 
       companyName = (string)x.Element("CompanyName"), 
       orders = x.Elements("Orders").Select(y => new {  
        orderID = (int)y.Element("OrderID"), 
        customerID = (string)y.Element("CustomerID"), 
        date = (DateTime)y.Element("OrderDate") 
       }).ToList() 
      }).ToList(); 
     } 
    } 
} 
関連する問題