问题标签 [xpathnavigator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
902 浏览

c# - 当我在 XPathNodeIterator.Current.SelectSingleNode 下搜索时,它只是在整个 xml 文档中搜索

您好我正在使用 XPathNodeIterator 在 XML 文档下的 XML 节点列表中进行迭代。如果条件匹配,则在迭代时,我需要该当前节点下的特定值。相反,SelectSingleNode 正在从其他父节点返回节点......让我举个例子:

示例 xml:

假设,我正在迭代所有“元素”并试图找到元素 id=2 的“地址”。现在,在迭代时假设我在“Element id=2”。当我找到节点时,我会说从当前节点 (nodeIterator.Current) 中选择一个名为“Zip”的节点。为此,我将 xpath 用作“/Address/ZipCode”(此处的格式可能是错误的,因为这只是示例)。在这种情况下,它应该返回 null,而是从“Element id=1”返回 ZipCode

任何帮助将是可观的..

0 投票
3 回答
1709 浏览

c# - Xpath查找两个不同元素的第一次出现

使用下面的示例,我想使用 xPath 来查找两个不同元素的第一次出现。例如,我想弄清楚是 b 还是 d 先出现。我们可以清楚地看出 b 出现在 d 之前(自上而下,而不是在树级别)。但是,如何使用 xpath 解决这个问题?

现在,我通过获取节点集中的第一个元素来找到节点(在本例中为 b 和 d),我使用以下代码找到该节点:

现在使用 xpath,我只是不知道哪个先出现,b 或 d。

0 投票
2 回答
247 浏览

vb.net - Xpath 和 MoveToAttribute

我一直在尝试使用 Xpath(在 VB.net 中)执行以下操作:

首先使用查询字符串中传递给网页的“ID”属性检查每个 CATEGORY 节点,然后一旦找到将“NAME”属性分配给字符串变量。我一直在尝试使用 MoveToFirstAttribute(),但它不起作用。

这是示例 XML:

我在另一个页面的其他地方使用了以下表达式来选择特定类别,因此我可以在 PRODUCT 子节点上工作,但是我无法选择特定的 CATEGORY 节点,然后移至其 NAME 属性:

我将不胜感激有关代码的帮助。

非常感谢

0 投票
2 回答
149 浏览

c# - Xpath 路径不起作用

我正在尝试通过 XpathNavigator 获取一个元素及其兄弟姐妹。

我想使用以下 XPath 导航到文件元素:

为什么这条路是错的?

编辑:感谢我的“名字”错误提示。

当我尝试运行它时,我什么也得不到。

0 投票
3 回答
698 浏览

c# - 在 C# 中使用 Xpath 将 comboBox.Slectedvalue 与 XML 文件节点值进行比较

这是我的 XML 文件的一部分,我在我的 c# 表单上有一个组合框,其中包含设备的名称形成我使用 xpath 导航器放在那里的 xml 文件,加上一个数字向上向下,最后是一个按钮我打电话给买。我想要做的是当我点击按钮购买时,我希望 DEVICE 节点的 QUANTITY 节点值等于组合框 SelectedValue 的数字向上向下值的数量。换句话说,我如何选择 DEVICE 元素的 QUANTITY 节点,其 NAME 等于组合框中的名称,并使用 C# 将其增加数字的值。

0 投票
2 回答
284 浏览

c# - 使用 C# 在两个 XML 节点选定值之间进行迭代

这是我的名为“Buying Bills.xml”的 XML 文件,其中 BILLS 是根:

我的表单上有两个组合框,每个组合框都包含我的 XML 文件中的所有日期(2 个相同的列表)。假设在 comboBox1 中我选择了文件中的第一个日期,而在 comboBox2 中我选择了最后一个日期(或者可能是第三个......无论如何),我怎样才能从这两个日期之间获得所有价格的总和(不仅两个选定日期价格的总和,但也是两者之间价格的总和)......这就像从包含第一个日期的节点 X 到包含第二个日期的节点 Z 扫描所有价格并计算总和。正如标题所说,使用 C#。在此先感谢各位:)

0 投票
1 回答
456 浏览

c# - xPath 通过 XPathNavigator 对象而不是通过表达式求值来查找祖先

我正在尝试查找某个节点的祖先。我们称它为“NodeA”。我得到一个“NodeA”节点列表,并想查找它的祖先以检查某个属性值。这是我检索所有“NodeA”节点的代码:

在“//在这里迭代祖先”区域中,我可以通过表达式评估我的节点并通过以下方式获取祖先列表(对于每个“NodeA”):

然而,这似乎是多余的,因为我有原始的 xml 和一个 XPathNavigator 实例,我是否可以不只是在那个时候得到我的祖先而不必通过导航器评估表达式?类似于以下内容(其中 item 的类型为 XPathNavigator):

或者

我意识到该项目上有一个 SelectAncestors 方法,但我没有运气让它工作。但如果是这样,一个例子将不胜感激

0 投票
2 回答
1323 浏览

c# - C# 中的字符串连接和标记化 xpath 函数

对于一个 ASP.NET 项目,我编写了一个控制器操作和一个表单,用户可以在其中输入 xpath 表达式并从服务器上的 xml 文件中检索结果。它工作正常,即使使用一些字符串函数,如 concat、substring-before 和 substring-after。

为了去掉输出中的一些逗号,我尝试使用字符串连接和标记化。但是,通过使用其中一个函数,我最终会遇到 XPathException。

我没有正确使用这些 xpath 函数吗?

0 投票
0 回答
170 浏览

xml - Navigator.InsertAfter = 无效操作异常 - XML & VB.NET

从昨天开始,我一直在努力解决这个问题。我有一个这样的 XML 文件(片段):

我已经设法通过使用 XmlNamespaceManager 删除了一些东西,一切都很好。当我尝试插入一行代码时,我这样做:

我总是遇到同样的错误:

无效的操作异常。由于探测器的实际位置,操作无效。

我已经尝试了几件事,比如不使用 NameSpaceManager,使用 InsertAfter、InsertBefore、InsertElementAfter、InsertElementBefore,在 navigator.MoveToChild 上有和没有第一个和第二个 URI,使用 xsi 而不是 xmlns 添加新的命名空间。我已经阅读了几次 msdn 网站,但我无法弄清楚。我究竟做错了什么?

我需要添加的是这个特定的行:

到节点之间,一个叫做Usage,另一个叫做Territory。

谢谢,从现在开始再见,贡萨洛

编辑:忘了说有几个用法和领土标签,我需要在所有标签之间添加同一行,这与问题有关吗?

0 投票
2 回答
923 浏览

c# - xpath 查询以选择属性不存在的元素

什么应该是 xpath 查询来选择属性 att 不存在的元素。

我想更新属性 att 不存在的元素。

谢谢