问题标签 [selectsinglenode]

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 投票
2 回答
13253 浏览

c# - System.Xml.XPath.XPathException:执行 SelectSingleNode("//(artist|author)") 时,表达式必须计算为节点集

有人可以解释一下为什么这不起作用吗?

我正在执行

我得到

但这有效并且即使有很多艺术家节点也不会引发异常

0 投票
1 回答
14730 浏览

c# - 为什么 SelectSingleNode 返回 null?

我正在使用一个 XML 文档,该文档包含一个类似于此的结构:

我目前正在以这种方式将其从文件加载到 XML 文档中:

但是,当我尝试运行下一行代码时,我遇到了一个问题,并且只有这个特定的文档:

由于使用名为“id”的属性存在问题,我猜测这是返回 null,还是我在代码中遗漏了什么?

0 投票
1 回答
55639 浏览

c# - 在 SelectSingleNode 中使用 XPath:从 XML 中检索单个元素(如果存在)

我的 XML 看起来像:

某些单独的项目可能存在也可能不存在。假设我想检索元素<Item></Item>(如果存在)。我已经尝试过以下 XPath(在 C# 中)。

  • XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']")--- 如果 Item two存在,那么它只返回第一个元素one。也许这个查询只是指向 itemSet 中的第一个元素,如果它在某个地方有一个值为 2 的项作为子项。这种解释正确吗?

所以我尝试了:

  • XMLNode node = myXMLdoc.SelectSingleNode("/itemSet[Item='two']/Item[1]")--- 我将这个查询读作,返回<Item>itemSet 中第一个值 = 'two' 的元素。我对么?

这仍然只返回第一个元素one。我究竟做错了什么?在这两种情况下,使用兄弟姐妹我可以遍历子节点并到达two,但这不是我正在看的。此外,如果两个不存在,则 SelectSingleNode 返回 null。因此,我得到一个成功的返回节点这一事实确实表明元素二的存在,所以如果我想要一个布尔测试来检查两个的存在,上面的任何 XPaths 就足够了,但我实际上需要完整的<Item>two</Item>元素我的返回节点。

[我在这里的第一个问题,也是我第一次使用 Web 编程,所以我刚刚从过去的 SO 问题中学习了上述 XPath 和相关的 xml 内容。所以要温柔,让我知道我是个傻瓜还是无视任何社区规则。谢谢。]

0 投票
4 回答
3151 浏览

xml - 在 XML 文档中选择节点时返回 Null

XML 新手。我有一个第 3 方 Web 服务,它提供一个 XML 文档,我必须更新元素值并传回。核心问题是在下面的代码中调用 node.RemoveAll() 方法时出现 NullReferenceException 错误。我正在调用 RemoveAll() 方法,因为每个元素在提供给我时都具有 xsi:nil 属性,如果我在更新元素值之前不删除它,则 Web 服务不会验证 XML。

第 3 方 Web 服务提供的 XML 文档如下:

我见过的其他解决方案使用了 XmlNamespaceManager,但我无法使其工作。此 xml 文档具有为 TaskData 元素指定的命名空间,以及为 RequestInfo 元素指定的不同命名空间。我尝试为每个命名空间指定 XmlNamespaceManager 变量,但得到了相同的结果....在中断模式下将鼠标悬停在 nsmgr 变量上显示“无法评估子项”并且 DefaultNamespace 属性是一个空字符串。

0 投票
4 回答
3351 浏览

c# - C# SelectSingleNode - 可以递归使用吗?

如,如果我有一个 XML 文档

我想先找到节点“item”的第一次出现然后更新属性,然后我想更新节点“foo”的第一次出现然后更新属性等等,

我的代码如下

虽然,第一次搜索和属性更新工作正常,第二次失败,因为 mySearchNode.SelectSingleNode 返回 null。

问题 - 这段代码有什么根本问题吗?为什么 SelectSingleNode 在第二个实例中没有按预期工作,就它而言,我在 Element 类型的 XmlNode 上执行它。

请协助。

非常感谢,

0 投票
1 回答
512 浏览

escaping - Backslash SelectSingleNode Escape

In Javascript I have an XML DOM. I am trying to select a node within the DOM by using SelectSingleNode. Something like cell.SelectSingleNode(stuff [@attrjunk = 'MATCH']). So what I want to match on has a backslash . What do I replace the MATCH with to match on abc\xyz?? I've tried abc\xyz and abc\xyz but neither seems to work unfortunately...

0 投票
1 回答
1383 浏览

selectsinglenode - 在 IXMLDOMElement 中选择单个节点?

我可以从 IXMLDOMElement 中选择单个节点吗,如果可能的话,请给我一个使用 MSXML 的示例

0 投票
1 回答
9701 浏览

c# - 解析 XML:我的元素中的冒号导致 XPath 错过它

我有一个加载的 XML 文档并尝试使用 XPath 进行搜索。此文件中的根节点是<t:Transmission xmlns:t='urn:InboundShipment'>,文件结尾用 . 正确关闭</t:Transmission>

我的问题是我不能在不使用后代轴的情况下走树。换句话说,我可以做到:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")并得到一个节点作为回报。但我不能做应该等效的事情:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")

如果我删除了,t:我可以进行 XPath 搜索/Transmission并获取整个文件。在t:那里我只是得到空值。或者,如果我尝试SelectSingleNode("t:Transmission")使用 XPath 语句出现错误。

我通常不需要查询根元素,所以我应该能够只使用后代轴进行搜索。但是 XML 对我来说看起来是有效的,所以我想知道如何解决这个问题。另外,我不想仅仅因为我不知道如何处理就要求客户删除“t:”。

0 投票
1 回答
7620 浏览

c# - SelectSingleNode 总是返回 null?

以我的 XML 的这个简化示例为例:

我正在尝试使用 SelectSingleNode 方法选择“错误”节点,但是使用以下代码它总是返回 NULL?

根据我所做的研究,这与名称空间有关,但我根本无法工作。有什么建议吗?

0 投票
1 回答
4867 浏览

html-agility-pack - HTMLAgilityPack ChildNodes 索引有效,命名节点无效

我正在使用 HTMLAgilityPack 解析 XML API 响应。我可以从 API 调用中选择结果项。然后我遍历这些项目并希望将 ChildNodes 写入表。当我通过以下方式选择 ChildNodes 时:

我得到了正确的 itemId 结果。但是当我尝试时:

我得到“引用的对象的值为‘Nothing’。”

我尝试过“itemID[1]”、“/itemId[1]”和一系列字符串。我已经尝试过 SelectSingleNode 和 ChildNodes.Item("itemId").innertext。唯一有效的是使用索引。

使用索引的问题在于,有时结果中会省略子元素,从而导致索引失效。

有人知道我在做什么错吗?