首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XML文档中选择节点时出现问题-返回NULL

在XML文档中选择节点时出现问题-返回NULL
EN

Stack Overflow用户
提问于 2011-10-10 20:22:37
回答 2查看 302关注 0票数 1

我正在解析一个XML文档,以取出"content“节点的第一个匹配项,并读取该节点的内部文本。

传入的XML文件可以在以下位置看到:

https://www.googleapis.com/shopping/search/v1/public/products?key=AIzaSyAfaLdRHGKa5Rens--Vpw-KftdzWyxe2co&country=GB&q=5055277014187&alt=atom

处理该文件的代码如下:

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestToSend);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
string responseString = sr.ReadToEnd();

XmlDocument thisXmlDoc = new XmlDocument();
thisXmlDoc.LoadXml(responseString);

//get Companies
XmlNodeList ocNodesCompany = thisXmlDoc.SelectNodes("//feed/entry/content");
foreach (XmlElement element in ocNodesCompany)
{
    description = element.InnerText;
    testOutput = "<b>" + stockRow["stockitem_text"].ToString() + "</b>: " + description + "<br /><br />";
    break;
}

Response.Write(responseString + "<br /><br />" + testOutput);

不幸的是,即使XML文件正确通过,它也没有找到任何节点,因此返回NULL,并且没有进入'foreach‘循环。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-10 20:43:00

当对某些命名空间中的元素使用XPath查询时,you have to declare and use namespace prefix

下面的代码可以工作:

代码语言:javascript
复制
var nsmgr = new XmlNamespaceManager(new NameTable());
nsmgr.AddNamespace("atom", "http://www.w3.org/2005/Atom");

XmlNodeList ocNodesCompany =
    thisXmlDoc.SelectNodes("/atom:feed/atom:entry/atom:content", nsmgr);

此外,在引用根节点时,您应该使用/而不是//

票数 2
EN

Stack Overflow用户

发布于 2011-10-10 20:36:58

您可以使用thisXmlDoc.GetElementsByTagName("content");而不是thisXmlDoc.SelectNodes("//feed/entry/content");

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7712671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档