Разбор XML в C # из потока - PullRequest
       25

Разбор XML в C # из потока

0 голосов
/ 09 февраля 2011

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

вот пример XML:

<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service" xmlns:com="http://www.webex.com/schemas/2002/06/common" xmlns:event="http://www.webex.com/schemas/2002/06/service/event"><serv:header><serv:response><serv:result>SUCCESS</serv:result><serv:gsbStatus>PRIMARY</serv:gsbStatus></serv:response></serv:header><serv:body><serv:bodyContent xsi:type="event:createEventResponse" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><event:sessionKey>11111111</event:sessionKey><event:guestToken>111111111111111111111</event:guestToken></serv:bodyContent></serv:body></serv:message>

И вот что я пытался сделать:

StreamReader reader = new StreamReader(dataStream);
XmlDocument doc = new XmlDocument();
doc.LoadXml(reader.ReadToEnd());
XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
XmlNamespaceManager ns2 = new XmlNamespaceManager(doc.NameTable);
XmlNamespaceManager ns3 = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("serv", "http://www.webex.com/schemas/2002/06/service");
ns2.AddNamespace("com", "http://www.webex.com/schemas/2002/06/common");
ns3.AddNamespace("event", "http://www.webex.com/schemas/2002/06/service/event");
XmlNode node = doc.SelectSingleNode("result",ns);

Тем не менее, по какой-то причине я не могу вернуть реальный результат, который должен быть либо «УСПЕХ», либо «НЕИСПРАВНОСТЬ», исходя из фактического xml выше.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2011

Ваш запрос xpath неверен.

попробуйте это:

XmlNode node = doc.SelectSingleNode("//serv:result",ns);

или

XmlNode node = doc.SelectSingleNode("serv:message/serv:header/serv:response/serv:result",ns);
0 голосов
/ 09 февраля 2011

Это работает:

XDocument doc = XDocument.Load(@"test.xml");
XNamespace serv = "http://www.webex.com/schemas/2002/06/service";
var result = doc.Descendants(serv + "result").First().Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...