PDA

View Full Version : سوال: خواندن مقادیر XML



e-arasteh
یک شنبه 29 فروردین 1389, 15:40 عصر
سلام
من یه رشته دارم که البته xml هستش اگه بخوام مقدار یکی از attribute ها رو بخونم باید چیکار کنم؟

Behrouz_Rad
یک شنبه 29 فروردین 1389, 15:44 عصر
خدایا شکرت که به ما صبر عظیم عنایت فرمودی.

برادر، میشه لطف کنی اون رشته ی XML رو قرار بدی؟ دستت طلا :)

e-arasteh
یک شنبه 29 فروردین 1389, 15: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, 16: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, 16: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, 17:08 عصر
int actionCode = int.Parse(node.InnerText);

با توجه به اصل Defensive programming، بهتره از TryParse استفاده کنی.

موفق باشید.