PDA

View Full Version : خواندن از فایل XML



javad_r_85
دوشنبه 23 خرداد 1390, 20:09 عصر
سلام
فایل زیر را در نظر بگیرید



<?xml version="1.0" encoding="utf-8" ?>
- <ARI>
- <Unit ID="1" Name="آذربایجان شرقی">
<city ID="1">آذرشهر</city>
<city ID="2">اسکو</city>
<city ID="3">اهر</city>
<city ID="4">بستان‌آباد</city>
<city ID="5">بناب</city>
<city ID="6">تبریز</city>
<city ID="7">جلفا</city>
<city ID="8">چاراویماق</city>
</Unit>
- <Unit ID="2" Name="آذربایجان غربی">
<city ID="1">ارومیه</city>
<city ID="2">اشنویه</city>
<city ID="3">بوکان</city>
<city ID="4">پیرانشهر</city>
<city ID="5">تکاب</city>
<city ID="6">چالدران</city>
<city ID="7">خوی</city>
<city ID="8">خوی</city>
<city ID="9">سردشت</city>
<city ID="10">سلماس</city>
<city ID="11">شاهین‌دژ</city>
<city ID="12">ماکو</city>
<city ID="13">مهاباد</city>
<city ID="14">میاندوآب</city>
<city ID="15">نقده</city>
</Unit>


</ARI>





اما مشکل:
1-چطور می تونم این فایل را جوری بخونم که مثلا لیست شهرهای مربوط به استان 1 را نمایش دهد
2 -چطور می تونم آیدی و نام هر استان را بخونم - <Unit ID="1" Name="آذربایجان شرقی">

haghft
دوشنبه 23 خرداد 1390, 22:06 عصر
XmlDocument cityDoc = new XmlDocument();
cityDoc.Load(@"city.xml");
foreach (XmlElement cityName in cityDoc.DocumentElement.ChildNodes[0].ChildNodes)
{
listBox1.Items.Add(cityName.InnerText);
}
MessageBox.Show(cityDoc.DocumentElement.ChildNodes[0].Attributes[0].InnerText + cityDoc.DocumentElement.ChildNodes[0].Attributes[1].InnerText);

Esmail Solhkhah
دوشنبه 23 خرداد 1390, 22:11 عصر
xml رو با متد ReadXml از دیتاتیبل بخون بعد هر بلایی خاستی سرش درار:لبخند:

haghft
دوشنبه 23 خرداد 1390, 22:24 عصر
xml رو با متد ReadXml از دیتاتیبل بخون بعد هر بلایی خاستی سرش درار:لبخند:
این روش شما درسته سادست اما طی تحقیقاتی که من کردم روش XMLDocument که طبق DOM هست بهینه تر و راندمان بالاتری داره.

javad_r_85
جمعه 27 خرداد 1390, 13:12 عصر
public List<Book> SelectBooks(int customerID)
{
string fullXmlPath = System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/books.xml");
XDocument xdocument = XDocument.Load(fullXmlPath);
XElement elem = xdocument.Element("purchases");

string id = customerID.ToString();

List<Book> books = (from customer in elem.Elements("customer")
from book in customer.Elements("book")
where customer.Attribute("id").Value == id
select new Book
{
CustomerID = customerID,
BookId = int.Parse(book.Attribute("id").Value),
Title = book.Element("title").Value,
Author = book.Element("author").Value,
PublicationYear = book.Element("pubDate").Value,
Price = book.Element("price").Value
}).ToList<Book>();

return books;
}