Tôi đã tạo ra một tập tin Xml với nội dung ví dụ như sau:Đọc nhiều nút con của tập tin xml
<?xml version="1.0" encoding="utf-8" ?>
<Periods>
<PeriodGroup name="HER">
<Period>
<PeriodName>Prehistoric</PeriodName>
<StartDate>-500000</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Iron Age</PeriodName>
<StartDate>-800</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Roman</PeriodName>
<StartDate>43</StartDate>
<EndDate>410</EndDate>
</Period>
</PeriodGroup>
<PeriodGroup name="CAFG">
<Period>
<PeriodName>Prehistoric</PeriodName>
<StartDate>-500000</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Roman</PeriodName>
<StartDate>43</StartDate>
<EndDate>410</EndDate>
</Period>
<Period>
<PeriodName>Anglo-Saxon</PeriodName>
<StartDate>410</StartDate>
<EndDate>800</EndDate>
</Period>
</PeriodGroup>
</Periods>
tôi cần phải có khả năng đọc các nút con Thời gian trong vòng một PeriodGroup chọn. Tôi đoán PeriodName có thể là một thuộc tính của Period nếu điều đó hợp lý hơn.
Tôi đã xem tải các ví dụ nhưng dường như không có gì đúng và dường như có hàng tá phương pháp khác nhau, một số sử dụng XmlReader, một số XmlTextReader và một số không sử dụng. Vì đây là lần đầu tiên tôi đọc một tệp Xml, tôi nghĩ tôi sẽ hỏi liệu có ai có thể cho tôi một con trỏ hay không. Tôi đã có một cái gì đó làm việc chỉ để thử những điều trên, nhưng nó cảm thấy clunky. Tôi đang sử dụng VS2010 và C#. Ngoài ra, tôi thấy rất nhiều người đang sử dụng LINQ-Xml, vì vậy tôi đánh giá cao những ưu và khuyết điểm của việc sử dụng phương pháp này.
string PG = "HER";
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("./Xml/XmlFile.xml"));
string text = string.Empty;
XmlNodeList xnl = doc.SelectNodes("/Periods/PeriodGroup");
foreach (XmlNode node in xnl)
{
text = node.Attributes["name"].InnerText;
if (text == PG)
{
XmlNodeList xnl2 = doc.SelectNodes("/Periods/PeriodGroup/Period");
foreach (XmlNode node2 in xnl2)
{
text = text + "<br>" + node2["PeriodName"].InnerText;
text = text + "<br>" + node2["StartDate"].InnerText;
text = text + "<br>" + node2["EndDate"].InnerText;
}
}
Response.Write(text);
}
Bạn có muốn mở rộng LINQ của mình một chút vì tôi chưa bao giờ sử dụng nó. Sử dụng 'XElement xml = XElement.Load (Server.MapPath (" ./ Xml/XmlFile.xml "));' các nút không được trả về trong các nút var. –
Tôi nghĩ rằng bạn có nghĩa là 'XDocument' ví dụ:' XDocument xml = XDocument.Load (HttpContext.Current.Server.MapPath (FileLoc)); ' – DGibbs
Thêm một giải thích ngắn gọn về truy vấn – DGibbs