ورود

View Full Version : حرفه ای: واکشی یک رکورد خاص با از xml



bfreind10
دوشنبه 19 مهر 1389, 15:04 عصر
سلام
من فایل xml با ساختار زیر دارم. توجه فرمائید:


<?xml version="1.0" encoding="utf-8" ?>
<Cities>
<city name="torento">
<id>1</id>
</city>
<city name="estokholm">
<id>2</id>
</city>
.
.
.

می خواهم با دستورات زیر نام شهری که آی دی 2 دارد را واکشی کنم و در تکس باکسم نشان دهم. البته یک چیزهایی نوشتم تا حدودی ولی هنوز مشکل داره
اینهم کدم:


Dim docReader As New XmlDocument
docReader.Load(Server.MapPath("~/XML/City.xml"))
Dim xnl As XmlNodeList
xnl = docReader.SelectNodes("/Cities/city[id=2]")
Dim citystr As String
For Each xn As XmlNode In xnl
Dim xr As New XmlNodeReader(xn)
TextBox1.Text = xr.Name
Next xn

کسی میتونه این کد رو برای من کاملش کنه؟

raziee
دوشنبه 19 مهر 1389, 19:17 عصر
بوسیله ی LINQ
Thumbs up RadWeather - کتابخانه ای برای بازیابی اطلاعات مربوط به وضعیت آب و هوا (http://barnamenevis.org/forum/showthread.php?t=247709) رو ببینید.

پروژه رو دانلود کنید. و نحوه ی کار رو ببینید

Behrouz_Rad
دوشنبه 19 مهر 1389, 23:20 عصر
XElement doc = XElement.Load(filePath);

string result =
doc.Elements("city")
.Elements("id")
.Where(c => c.Value.Equals("2"))
.Select(c => c.Parent.Attribute("name").Value)
.FirstOrDefault();

Response.Write(result);

موفق باشید.

bfreind10
سه شنبه 20 مهر 1389, 07:53 صبح
استاد راد بسیار ممنون هستم لطف کردید و کارم راه افتاد فقط یک سوال اگر ساختار فایل xml من بصورت زیر باشد کد فوق چه فرقی خواهد کرد؟


<?xml version="1.0" encoding="utf-8" ?>
<Items>
<Item ddlValue ="1" ddlText="china" />
<Item ddlValue ="2" ddlText="usa" />
.
.
.

Behrouz_Rad
سه شنبه 20 مهر 1389, 12:00 عصر
XElement doc = XElement.Load(filePath);

string result =
doc.Elements("Items")
.Elements("Item")
.Where(c => c.Attribute("ddlValue").Value.Equals("2"))
.Select(c => c.Attribute("ddlText").Value)
.FirstOrDefault();

Response.Write(result);

bfreind10
سه شنبه 20 مهر 1389, 13:20 عصر
استاد راد خیلی ممنون مشکلم کاملا حل شد فقط در کد دوم


doc.Elements("Items")
.Elements("Item")


چون چیزی را چاپ نمیکرد اتفاقی Elements("Items"( رو حذف کردم فقط همون Elements("Item"( رو گذاشتم خوب شد.

باز هم ممنونم

Behrouz_Rad
سه شنبه 20 مهر 1389, 16:42 عصر
استاد راد خیلی ممنون مشکلم کاملا حل شد فقط در کد دوم


doc.Elements("Items")
.Elements("Item")


چون چیزی را چاپ نمیکرد اتفاقی Elements("Items"( رو حذف کردم فقط همون Elements("Item"( رو گذاشتم خوب شد.

باز هم ممنونم
ساختار جدیدی که دادی رو در فایل مثال قبلی جایگزین کردم و در زیر مجموعه ی Cities قرار دادم. وقتی که از XElement استفاده می کنی، نیاز به شروع از ریشه برای خوندن Node ها وجود نداره اما اگر از XDocument استفاده کنی، این نیاز وجود داره.

موفق باشید.