Разбор XML-ответа

1

Я получил ответ XML как:

 <Resp>
<status>00</status>
<errorcode></errorcode>
<errordescr></errordescr>
<data>
    <Table>
        <USERNAME>Name</USERNAME>
        <ACCLOCK>N</ACCLOCK>
        <EMAILID>[email protected]</EMAILID>
        <LASTLOGINDATE>23-03-2015 12:35:40</LASTLOGINDATE>
        <LOGINSTATUS>N</LOGINSTATUS>
        <MOBILENO>9848022338</MOBILENO>
        <PASSWORD>Abcd@1234</PASSWORD>
        <PWDCOUNT>0</PWDCOUNT>
        <PWDVALIDTO>12-05-2015 12:18:10</PWDVALIDTO>
        <DESCRIPTION>Shop Person</DESCRIPTION>
        <STATUS>Y</STATUS>
        <USRID_FK>100017</USRID_FK>
        <ROLE>12</ROLE>
        <COUNTRY>61</COUNTRY>
        <MERID_FK>100002</MERID_FK>
        <GENDER>0</GENDER>
        <COUNTRY1>61</COUNTRY1>
        <STATE>0</STATE>
        <DOB>12-02-1997</DOB>
        <STRID_FK>10025</STRID_FK>
    </Table>
</data>

Я сохраняю этот XML-ответ в следующей string:

string response;

Я хочу разделить ответ строки и получить значения некоторых тегов (EX: - USERNAME, STRID_FK, MERID_FK), чтобы сохранить их в других строках для дальнейшего использования.

Пожалуйста, помогите мне с этим..

Теги:
string

2 ответа

1
Лучший ответ

Другой вариант, на этот раз с использованием Linq для Xml:

var yourXml = XElement.Parse (response); // Parse the response

// Look up specific values by name:
var username = yourXml.Descendants().First(node => node.Name == "USERNAME").Value;

Еще один вариант - поместить все данные из <Table>...</Table> в словарь для удобного поиска позже:

var dict = yourXml.Descendants()
                  .Where(node => node.Name == "Table")
                  .Descendants()
                  .ToDictionary(node => node.Name.ToString(), node => node.Value);

// Look up value using "USERNAME" as key:
var exampleUsername = dict["USERNAME"];
  • 0
    Это сработало .. Маленький и полезный ..
5
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString);

XmlNodeList xnList = xml.SelectNodes("/data/Table");
foreach (XmlNode xn in xnList)
{
  string USERNAME= xn["USERNAME"].InnerText;
  string STRID_FK= xn["STRID_FK"].InnerText;
  string MERID_FK= xn["MERID_FK"].InnerText;
  Console.WriteLine("Name: {0, {1}, {2}", USERNAME, STRID_FK,MERID_FK);
}

или при попытке напрямую выбрать узел xmlDoc.SelectNodes("/data/Table/USERNAME") или

XmlNodeList nodes= doc.GetElementsByTagName("USERNAME"); 
  • 0
    Спасибо за ваш добрый ответ .. Я пытаюсь это в Windows Phone App ... Классы XmlDocument и XmlNodeLIst недоступны. Даже добавление пространства имен [с использованием system.xml] .. также не имеет никакого эффекта ... Все ссылки включены ... Вы можете помочь?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню