Я пробовал несколько методов, от 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 выше.
Как я могу это сделать?
Ваш запрос xpath неверен.
попробуйте это:
XmlNode node = doc.SelectSingleNode("//serv:result",ns);
или
XmlNode node = doc.SelectSingleNode("serv:message/serv:header/serv:response/serv:result",ns);
Это работает:
XDocument doc = XDocument.Load(@"test.xml"); XNamespace serv = "http://www.webex.com/schemas/2002/06/service"; var result = doc.Descendants(serv + "result").First().Value;