c# – 使用XPATH访问XML元素(已经是:学习xpath的好教程)

我正在尝试学习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教程,他们看起来不错.

解决方法

也许XML不是你发布的,而是认的命名空间声明.这就是为什么XPath表达式由初学者编写的主要原因不能选择他们想要选择的内容.在这种情况下,您将需要一个XmlNamespaceManager http://msdn.microsoft.com/en-us/library/6k4x060d.aspx.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...