Tag: xpathnavigator

Easy XPathNavigator GetAttribute

刚刚开始我的第一次参加XPathNavigator 。 这是我的简单xml: 现在,我使用CommonLibrary.NET库来帮助我一点: public static XmlDocument theXML = XmlUtils.LoadXMLFromFile(PathToXMLFile); const string thexpath = “/theroot/thisnode”; public static void test() { XPathNavigator xpn = theXML.CreateNavigator(); xpn.Select(thexpath); string thisstring = xpn.GetAttribute(“visible”,””); System.Windows.Forms.MessageBox.Show(thisstring); } 问题是它无法找到属性。 我已经查看了MSDN上的文档,但是无法理解正在发生的事情。

哪个是性能最佳的:XPathNavigator与XPath vs Linq到Xml查询?

我有一个应用程序,我使用XPathNavigator迭代节点。 它工作正常。 但我想知道如果我使用LINQ to Xml …. 我会得到什么好处(性能,可维护性)? 有了XPath,LINQ to Xml的性能如何? 我正在使用C#.net,VS 2010,我的.xml是中等大小。

在C#中实现我自己的XPathNavigator

我正在寻找从Microsoft的XPathNavigator类派生的类的C#示例实现。 任何人都可以指出我这样的文章吗? 正如您可能(或可能不知道)所知,XmlNavigator旨在允许在大多数数据模型上叠加XPath导航。 我已经实现了我的派生XPathNavigator类,它运行得很好。 很好,除了递归搜索的XPath表达式,即“// *”。 我很确定我在Clone,MoveToFirstChild或MoveTo overides中有一个微妙的错误,我认为如果存在另一个例子,我可能会有所帮助。 另外,我确信我已经看过杂志文章,讨论这个问题。 事实certificate我的搜索没有任何结果。 也许有人记得这样的文章。

使用XPath查询从匹配的XML节点获取属性值

这似乎不应该是困难的,但我现在卡住了。 我正在尝试从与给定XPath查询字符串匹配的节点获取特定属性的属性值。 这是我到目前为止所拥有的: public static IEnumerable GetAttributes(this XmlDocument xml, string xpathQuery, string attributeName) { var doc = new XPathDocument(new XmlNodeReader(xml)); XPathNavigator nav = doc.CreateNavigator(); XPathExpression expr = nav.Compile(xpathQuery); XPathNodeIterator iterator = nav.Select(expr); while (iterator.MoveNext()) { XPathNavigator curNav = iterator.Current; if (curNav.HasAttributes) { XmlNode curNode = ((IHasXmlNode)curNav).GetNode(); if (null != curNode) { XmlAttribute attrib = curNode.Attributes[attributeName]; […]

解析XPath表达式

我正在尝试为XPath创建一个’AET’(抽象表达式树)(因为我正在编写一个WYSIWYG XSL编辑器)。 在过去的三到四个小时里,我一直用XPath BNF撞墙。 我想到了另一个解决方案。 我以为我可以编写一个实现IXPathNavigable的类,它在调用CreateNavigator时返回我自己的XPathNavigator。 这个XPathNavigator总是会在任何方法调用上成功,并会跟踪这些调用 – 例如我们移动到客户节点,然后移动到客户节点。 然后我可以使用这些信息(希望)来创建’AET’(因此我们现在可以在对象模型中拥有客户/客户)。 唯一的问题是:我如何通过XPathExpression运行IXPathNavigable? 我知道这太懒了。 但是有没有其他人经历过努力并编写了一个XPath表达式解析器? 我还没有POC我可能的解决方案,因为我无法测试它(因为我不能对IXPathNavigable运行XPathExpression),所以我甚至不知道我的解决方案是否会工作。