0

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に基づいて「成功」または「失敗」のいずれかになるはずの実際の結果を返すことができないようです。

これどうやってするの?

4

2 に答える 2

2

xpath クエリが正しくありません。

これを試してください:

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

また

XmlNode node = doc.SelectSingleNode("serv:message/serv:header/serv:response/serv:result",ns);
于 2011-02-08T23:24:18.933 に答える
0

これは機能します:

XDocument doc = XDocument.Load(@"test.xml");
XNamespace serv = "http://www.webex.com/schemas/2002/06/service";
var result = doc.Descendants(serv + "result").First().Value;
于 2011-02-08T23:24:24.207 に答える