【发布时间】:2010-08-06 12:55:33
【问题描述】:
我正在努力学习 XPath。这个理论看起来非常简单,除了它不起作用。
我正在尝试获取每个目标元素的内容
XPathDocument doc = new XPathDocument(sPath);
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr;
expr = nav.Compile("/doc/file/body/trans-unit/target");
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
sbDoc.Append(nav2.InnerXml);
}
XML 文档如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<doc version="1.2">
<file original="affiliate.php" source-language="EN-US" target-language="FR-FR" datatype="php">
<header>
<skl>
<external-file href="affiliate.php"/>
</skl>
</header>
<body>
<trans-unit id="tu1">
<source xml:lang="EN-US">Your Program Details</source>
<target xml:lang="FR-FR">Your Program Details</target>
</trans-unit>
<trans-unit id="tu2">
<source xml:lang="EN-US">Status</source>
<target xml:lang="FR-FR">Status</target>
</trans-unit>
这几乎是教程中的逐字逐句,但我无法让它发挥作用。创建迭代器后,在调试模式下,可以看到文档加载完毕,但是迭代器没有找到结果,跳过了While循环。
我可能在做一些非常愚蠢的事情,但是什么?
有人知道我在哪里可以找到好的、可靠的 XPATH 教程吗?
谢谢大家。结果我忽略了有一个命名空间的事实(我在简化 XML 代码时删除了它,因为我没有意识到它很重要),并且添加了命名空间管理器,代码工作正常。
我现在正在研究提出的 XPATH 教程,它们看起来不错。
【问题讨论】: