使用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文档如下所示:
Your Program Details Your Program Details Status Status
这几乎是从一个教程中逐字逐句,但我无法让它工作。 创建迭代器时,在调试模式下,我可以看到文档已加载,但迭代器没有找到结果并跳过While循环。
我可能正在做一些非常愚蠢的事情,但是什么呢?
谁知道我在哪里可以找到一个好的,可靠的XPATH教程?
谢谢大家。 事实certificate我忽略了这样一个事实:有一个名称空间(我在删除它的同时简化了XML代码,因为我没有意识到它很重要),并且通过添加名称空间管理器,代码运行正常。
我现在正在研究提出的XPATH教程,它们看起来很好。
也许XML不是您发布的,但具有默认的命名空间声明。 这是初学者编写的XPath表达式不选择他们想要选择的内容的主要原因。 在这种情况下,您需要一个XmlNamespaceManager http://msdn.microsoft.com/en-us/library/6k4x060d.aspx 。
我会选择经典的W3Schools教程 。 这就是我学习的方式,它让我很好。 绝对涵盖所有基础知识。
MSDN XPath语法
我发现zvon上的教程非常好。
这是XPath教程 。
我总是发现这个教程/参考非常有用… http://zvon.org/comp/r/tut-XPath_1.html#
UPDATE
我使用了您的代码和XML文档,并且能够毫无问题地检索目标元素。 我必须在XML文档的末尾关闭,
元素,但我认为这是一个剪切和粘贴问题。 我想我的问题是(这是非常明显的),你确定XML文档正在加载,并且那个加载实际上有你正在追求的内容吗? 我复制了你的XML文档并在XPathDocument
构造函数中对路径进行了硬编码,一切正常(意思是,StringBuilder有来自
元素的文本)。
还尝试了ANSI和UTF-8编码 – 没问题。
我在我的开发环境中使用VS2010。
http://www.w3schools.com/xsl/xpath_intro.asp
顶部和xpath参考中都有一个教程。
我迟到了,但会为求职者发帖。
获取XPathbuilder 。 如果您想学习xpath,请使用此工具,示例扭曲的xml文件,打开xpath中的帮助部分并开始使用。
我现在正在使用它,我不敢相信我花了5分钟来选择我需要的东西。 (梦魇配置文件为xml)。
JQuery支持基本的XPath表达式,您可以使用它来练习编写XPath选择器。
我发现.Net中缺少强类型的xpath支持。 这是一个使用linq-esq表达式生成xpath的库。
http://www.syntaxsuccess.com/viewarticle/how-to-create-xpath-using-linq
例:
var xpath = CreateXpath.Where(e => e.TargetElementName == "td" && e.TargetElementText.Contains("my test")); xpath generated: //td[contains(text(),'my test')]