下面是一个示例 XML 文档,与我从中获取信息的文档相匹配:
<?xml version="1.0" standalone="yes"?>
<Products xmlns="http://tempuri.org/Products.xsd">
<Movies>
<Title>Title1</Title>
<Language>English</Language>
</Movies>
<Movies>
<Title>Title2</Title>
<Language>English</Language>
</Movies>
<Movies>
<Title>Title3</Title>
<Language>French</Language>
</Movies>
<Books>
<Title>BTitle1</Title>
<Genre>Suspense</Genre>
</Books>
<Books>
<Title>BTitle2</Title>
<Genre>Suspense</Genre>
</Books>
<Books>
<Title>BTitle3</Title>
<Genre>SciFi</Genre>
</Books>
<Books>
<Title>BTitle4</Title>
<Genre>SciFi</Genre>
</Books>
</Products>
这是我的代码,用于获取所有悬疑类型的书籍:
//Get state list using XPath
XPathDocument xDoc = new XPathDocument(xmlPath); //Path to my file
XPathNavigator xNav = xDoc.CreateNavigator();
string booksQuery = "Books[Genre = \"Suspense\"]";
XPathNodeIterator xIter = xNav.Select(booksQuery);
while (xIter.MoveNext())
{
//do stuff with xIter.Current
}
我尝试过几个查询,包括Products/Books[Genre = \"Suspense\"]
, Products/Books
, ./Books
, and Books
。我的 xIter 总是有零个项目。
我是 XPath 新手,所以我确信这是一个非常简单的错误,但也许不是。我知道我可以使用此 XML 文件获取包含表 [Movies] 和 [Books] 的数据集myDataSet.ReadXml(myXmlPathString);
所以 XML 文件没有损坏。如果这有帮助的话。
所以,我的问题...我做错了什么?
XPathDocument xDoc = new XPathDocument(xmlPath); //Path to my file
XPathNavigator xNav = xDoc.CreateNavigator();
XmlNamespaceManager mngr = new XmlNamespaceManager(xNav.NameTable);
mngr.AddNamespace("p", "http://tempuri.org/Products.xsd");
string booksQuery = "//p:Books[p:Genre = \"Suspense\"]";
XPathNodeIterator xIter = xNav.Select(booksQuery,mngr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)