我有一个XML文件,它具有以下结构:
<mediawiki ...>
<siteinfo>...</siteinfo>
<page>
<title>The Title</title>
<id>42</id>
...
</page>
... more page items ...
</mediawiki>
Run Code Online (Sandbox Code Playgroud)
我稍微了解一下XPath-Query并编写了以下代码:
_xmlArticlesDocument = new XmlDocument();
_xmlArticlesDocument.Load(xmlArticlesFileName);
Run Code Online (Sandbox Code Playgroud)
现在我想抓住一个具有给定id-Subelement的页面元素.所以我写道:
XmlNode node = _xmlArticlesDocument.DocumentElement.SelectSingleNode
("//mediawiki/page[id=" + id.ToString() + "]");
Run Code Online (Sandbox Code Playgroud)
但节点始终为空.我已经尝试了几个查询,包括"page/id","page","/ page","// page"来获取任何内容,但节点始终为null.我通过快速检查检查了_xmlArticlesDocument变量,它包含具有预期结构的正确XML文件.
在我看来,我错过了一些非常基本的东西,但不知道是什么.也许这里有人有想法?
先谢谢你,弗兰克
查询看起来正是基于您向我们展示的内容.但是我怀疑在mediawiki元素上有"..."有一个xmlns ="...."属性对吗?
我怀疑那将是绊倒你的原因.你需要这样的代码: -
XmlNamespaceManager nsmgr = new XmlNamespaceManager(_xmlArticlesDocument.NameTable);
nsmgr.AddNamespace("a", "the-namespace-in-them-xmlns-attribute");
XmlNode page = _xmlArticlesDocument.SelectSingleNode(String.Format("//a:page[id={0}]", id), nsmgr);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8199 次 |
| 最近记录: |