View Full Version : سوال: خواندن مقادیر XML
e-arasteh
یک شنبه 29 فروردین 1389, 16:40 عصر
سلام
من یه رشته دارم که البته xml هستش اگه بخوام مقدار یکی از attribute ها رو بخونم باید چیکار کنم؟
Behrouz_Rad
یک شنبه 29 فروردین 1389, 16:44 عصر
خدایا شکرت که به ما صبر عظیم عنایت فرمودی.
برادر، میشه لطف کنی اون رشته ی XML رو قرار بدی؟ دستت طلا :)
e-arasteh
یک شنبه 29 فروردین 1389, 16:49 عصر
خدایا شکرت که به ما صبر عظیم عنایت فرمودی.
برادر، میشه لطف کنی اون رشته ی XML رو قرار بدی؟ دستت طلا :)
ببخشید استاد
string xml = "<!-- Generated: Sun Apr 18 13:47:11 GMT+00:00 2010--><RESPONSE><ACTIONCODE>1806</ACTIONCODE><DESC>Message is duplicate</DESC><RESPTYPE>BLOCKING</RESPTYPE><BLOCKING><MSGSEQ>1</MSGSEQ><CHNTYPE>INTR</CHNTYPE><CHNID>9</CHNID><ACCNO>3201500027</ACCNO><AMNT>120000</AMNT><STATUS /><ACCBALANCE /><ACCBRANCHID /><RESPDATETIME>13890129134711</RESPDATETIME><MAC>1</MAC></BLOCKING></RESPONSE>";
فرض کنید که میخوام به 1806 دست پیدا کنم
mehdi.mousavi
یک شنبه 29 فروردین 1389, 17:04 عصر
ببخشید استاد
string xml = "<!-- Generated: Sun Apr 18 13:47:11 GMT+00:00 2010--><RESPONSE><ACTIONCODE>1806</ACTIONCODE><DESC>Message is duplicate</DESC><RESPTYPE>BLOCKING</RESPTYPE><BLOCKING><MSGSEQ>1</MSGSEQ><CHNTYPE>INTR</CHNTYPE><CHNID>9</CHNID><ACCNO>3201500027</ACCNO><AMNT>120000</AMNT><STATUS /><ACCBALANCE /><ACCBRANCHID /><RESPDATETIME>13890129134711</RESPDATETIME><MAC>1</MAC></BLOCKING></RESPONSE>";
فرض کنید که میخوام به 1806 دست پیدا کنم
سلام.
میتونید به این روش عمل کنید:
string xml = "<!-- Generated: Sun Apr 18 13:47:11 GMT+00:00 2010--><RESPONSE><ACTIONCODE>1806</ACTIONCODE><DESC>Message is duplicate</DESC><RESPTYPE>BLOCKING</RESPTYPE><BLOCKING><MSGSEQ>1</MSGSEQ><CHNTYPE>INTR</CHNTYPE><CHNID>9</CHNID><ACCNO>3201500027</ACCNO><AMNT>120000</AMNT><STATUS /><ACCBALANCE /><ACCBRANCHID /><RESPDATETIME>13890129134711</RESPDATETIME><MAC>1</MAC></BLOCKING></RESPONSE>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlNode node = doc.SelectSingleNode("//RESPONSE/ACTIONCODE");
if (node != null && !string.IsNullOrEmpty(node.InnerText))
{
int actionCode = int.Parse(node.InnerText);
}
موفق باشید.
Behrouz_Rad
یک شنبه 29 فروردین 1389, 17:37 عصر
من XLINQ رو ترجیح میدم:
XElement document = XElement.Parse(xml);
XElement element = (from elem in document.Elements("ACTIONCODE")
select elem).FirstOrDefault();
if (element != null && !string.IsNullOrEmpty(element.Value))
{
Response.Write(element.Value);
}
در ضمن، اون چیزی که شما میخوای بخونی Attribute نیست، مقدار یک Node هست.
موفق باشید.
Behrouz_Rad
یک شنبه 29 فروردین 1389, 18:08 عصر
int actionCode = int.Parse(node.InnerText);
با توجه به اصل Defensive programming، بهتره از TryParse استفاده کنی.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.