Как разобрать XML (DataSet) в Windows Phone 7 - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть XML как ниже, но я не могу его проанализировать. Пожалуйста, помогите мне разобрать приведенный ниже XML.

<?xml version="1.0" encoding="utf-8"?><soap:Envelope     
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>
<GetResponse xmlns="http://tempuri.org/"><GetResult>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<a>hi1</a>
<b>hi2</b>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<a>hi3</a>
<b>hi4</b>
</Table>
</NewDataSet>
</diffgr:diffgram>
</GetResponse></GetResult>
</soap:Body>
</soap:Envelope>

Здесь я хочу получить результаты таблицы (т. Е. A, b). Я пытался использовать Linq, но я не могу разобрать его. я попробовал код что-то вроде этого:

//XML will be there in response string
String response = e.response;
public static String myNamespace = "http://tempuri.org/";
XDocument reader = XDocument.Parse(response);
var results = from result in reader.Descendants(XName.Get("GetResponse", myNamespace))
              select result.Element("GetResult").

Но этот код возвращает ноль.

EDIT: Я использовал ниже код: Строка ответа = e.response;

public static String myNamespace = "http://tempuri.org/";
XDocument reader = XDocument.Parse(response);
XElement resultElement = reader.Descendants(XName.Get("GetResult", myNamespace)).Single(); 
XElement resultElement1 = resultElement.Descendants(XName.Get("NewDataSet", "")).Single();

Итак, теперь resultElement1 я получил XML, как показано ниже:

<NewDataSet xmlns="">
  <Table diffgr:id="Table1" msdata:rowOrder="0" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<a>hi1</a>
<b>hi2</b>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<a>hi3</a>
<b>hi4</b>
</Table>
</NewDataSet>

Итак, как мне найти значения тега и тега?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 02 января 2012

Что вас блокирует?

Вы можете попробовать это:

        var resultNewDataSet = XElement.Parse(xmlContent);

        var result = resultNewDataSet.Descendants("Table")
            .Select(t => new
                {
                    aaa = t.Descendants("aaa").First().Value,
                    bbb = t.Descendants("bbb").First().Value
                });

        foreach (var res in result)
        {
            System.Diagnostics.Debug.WriteLine("aaa: " + res.aaa + " / bbb: " + res.bbb);
        }
0 голосов
/ 29 декабря 2011

Элемент GetResult также находится в пространстве имен http://tempuri.org, поэтому при выборе предложения ничего не найдено.

В любом случае я бы упростил запрос до следующего:

public static String myNamespace = "http://tempuri.org/";
XDocument reader = XDocument.Parse(response);
XElement resultElement = reader.Descendants(XName.Get("GetResult", myNamespace)).Single();
...