C # XPath проблема - PullRequest
       9

C # XPath проблема

0 голосов
/ 17 декабря 2009

Когда вы запускаете следующий код, StatusCode возвращается как ноль. Что я делаю не так?

        var xml = @"<?xml version='1.0' encoding='UTF-8'?>
            <kml xmlns='http://earth.google.com/kml/2.0'>
              <Response>
                <name>The Name</name>
                <Status>
                  <code>200</code>
                  <request>geocode</request>
                </Status>
              </Response>
            </kml>";

        XmlDocument XmlDoc = new XmlDocument();
        ASCIIEncoding Enc = new System.Text.ASCIIEncoding();
        using (MemoryStream Stream = new MemoryStream(Enc.GetBytes(xml)))
        {
            XmlDoc.Load(Stream);
        }
        XmlElement Root = XmlDoc.DocumentElement;
        XmlNamespaceManager XmlNS = new XmlNamespaceManager(XmlDoc.NameTable);
        XmlNS.AddNamespace("default", Root.NamespaceURI);
        XmlNode XmlResults = Root.SelectSingleNode("//default:Response", XmlNS);
        XmlNode StatusCode = XmlResults.SelectSingleNode("Status/code");

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

1 Ответ

3 голосов
/ 17 декабря 2009

Вам также необходимо предоставить пространство имен для элементов в дальнейшем, поскольку они тоже находятся в пространстве имен.

XmlNode xmlResults = Root.SelectSingleNode("//default:Response", xmlNS);
XmlNode statusCode = XmlResults.SelectSingleNode("default:Status/default:code",
    xmlNS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...