【发布时间】:2013-11-11 13:30:52
【问题描述】:
我正在尝试通过 XpathNavigator 获取一个元素及其同级元素。
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_6_5_5.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='6.5' maintenanceversion='5.0'>
<item name='Keywords'><text/></item>
<item name='Version'><number>1</number></item>
<item name='UPDATEDISTRIBUTION'><text>1</text></item>
<item name='$FILE' summary='true' sign='true' seal='true'>
<object>
<file hosttype='cdstorage' compression='none' flags='storedindoc' name='STG08828'>
<created><datetime>20110119T230442,22+01</datetime></created>
</file>
</object>
</item>
</document>
我想使用以下 XPath 导航到文件元素:
//item/name/object/file[@name='STG08828']
为什么这条路径是错误的?
编辑:感谢我的“名字”错误提示。
当我尝试运行它时,我什么也得不到。
XmlElement rootNode = xmlDoc.DocumentElement;
// select the file Element
String query = "//file[@name='" + name + "']";
XmlNodeList fileElement = rootNode.SelectNodes(query);
【问题讨论】:
-
//item/name是属性而不是元素。尝试将 xpath 更改为//item/object/file[@name='STG08828'] -
我知道我在抓紧strws,但你确定
name(String query = "//file[@name='" + name + "']";中使用的变量)是相同的情况,并且没有任何空格是吗? -
您的 XML 包含命名空间。您似乎没有注册和使用它们。
-
好的,@float,我只是想消除明显的可能性。我认为 Jens 在命名空间方面走在了正确的轨道上。看
XmlNamespaceManager类 -
例如,看看this answer。据我所知,C# 仅支持 XPath 1.0。
标签: c# xml xpath xpathnavigator