问题标签 [xpath]

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 投票
4 回答
4105 浏览

c# - 使用 XPath/应用 XSL 转换遍历任意 C# 对象图

我一直在寻找允许我将任意 C# 对象传递给 XSL 转换的组件。

这样做的天真方法是使用 XmlSerializer 序列化对象图;但是,如果您有一个大型对象图,就性能而言,这可能会导致问题。循环引用、延迟加载、代理等问题可能会进一步搅浑这里的水。

更好的方法是拥有某种实现 IXPathNavigable 和 XPathNavigator 的适配器类。我遇到的一个这样的例子是Byte-Force 的 ObjectXPathNavigator —— 然而,它的大部分关键文档都是俄语的,我最初的测试似乎表明它有一些怪癖和特质。

有没有人知道 (a) 任何关于此特定英语的资源(概述、教程、博客文章等)或 (b) 提供相同或相似功能的任何其他替代方案?

0 投票
6 回答
3087 浏览

c# - What is a good way to find a specific value in an XML document using C#?

I'm calling a WebService exposed by Oracle that accepts an input of an ItemID and returns to me the corresponding Item Number. I want to grab the Item Number that has been returned out of the XML contained in the response.

The XML looks like this:

I'm interested in grabbing only the <ns0:result>1010603</ns0:result> particularly only the 1010603.

I haven't done a lot of work parsing XML using C# and I'm playing around with a few different methods so far. What is the recommended way to do this?

I'm on VS2008 (so XPath is available etc.)

0 投票
2 回答
686 浏览

c# - 如何将 XPathExpression 结果保存到具有祖先结构的分隔 XML?

我正在为存在于不同深度级别的某些节点解析带有 XPathExpression 选择的大型 XML 文件。

将选定节点导出到单独的 XML 文件,保留所有直接祖先节点(及其属性)的最简单方法是什么?首选 C#。

示例源 XML:

用于过滤“c”节点的预期目标 XML

编辑:我使用 XPathExpression 和 XPathNodeIterator 因为有额外的逻辑来测试给定的节点是否应该包含在结果 XML 中,仅 XPathExpression 是不够的。所以基本上我有一组匹配的 XPathNavigator 元素,我想用祖先结构将它们保存到 XML。

0 投票
2 回答
2223 浏览

c# - 在 C# 中实现我自己的 XPathNavigator

我正在寻找派生自 Microsoft 的 XPathNavigator 类的类的 C# 示例实现。有人能指点我这样的文章吗?

正如您可能(或可能不)知道的那样,XmlNavigator 旨在允许在大多数数据模型上叠加 XPath 导航。

我已经实现了我的派生 XPathNavigator 类,它运行良好。很好,除了递归搜索的 XPath 表达式,即“//*”。

我很确定我在 Clone、MoveToFirstChild 或 MoveTo overides 中有一个微妙的错误,我认为如果存在另一个示例可能会有所帮助。

另外,我确信我已经看过讨论这个问题的杂志文章。事实证明,我的搜索一无所获。也许有人记得这样的文章。

0 投票
7 回答
42016 浏览

xpath - 使用 XPath 按包含空格的值定位节点

我需要使用 XPath 通过其值在 xml 文件中定位节点。当要查找的节点包含内部带有空格的值时,就会出现问题。铁:

我无法构造定位第二个子节点的 XPath。

简单的 XPath /Root/Child 对两个孩子都适用,但 /Root[Child=value with spaces] 返回一个空集合。

我已经尝试使用%20#20;来屏蔽空格。,   并使用引号和双引号。

仍然没有运气。

有人有想法吗?

0 投票
3 回答
10140 浏览

xml - 不同的元素和分组

给定以下 xml 片段:

我需要制作类似的东西

我尝试使用密钥,例如

但我真的不明白如何将其带到下一步,或者这是否是正确的方法。

0 投票
2 回答
1584 浏览

regex - 如何只捕获id的一部分?

我正在尝试捕获将随机生成的元素的 id。我可以像这样成功地捕获我的元素 id 的值......

现在我的变量将类似于...

我想删除 'divElement-' 以便我留下的变量是 '12345' 以便我以后可以使用它来选择与之关联的 'form-12345' 元素......像这样:

我怎么能做到这一点?

0 投票
1 回答
18603 浏览

c# - 如何以编程方式在 XPathExpression 实例中使用 XPath 函数?

我当前的程序需要以编程方式创建一个 XPathExpression 实例以应用于 XmlDocument。xpath 需要使用一些 XPath 函数,例如“ends-with”。但是,我找不到在 XPath 中使用“ends-with”的方法。一世

它抛出如下异常

未处理的异常:System.Xml.XPath.XPathException:需要命名空间管理器或 XsltC ontext。此查询具有前缀、变量或用户定义的函数。
在 MS.Internal.Xml.XPath.CompiledXpathExpr.get_QueryTree() 在 System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr, XPathNodeIt erator context)
在 System.Xml.XPath.XPathNavigator.Evaluate(XPathExpression expr)

代码是这样的:

我尝试在编译表达式时更改代码以插入 XmlNamespaceManager,如下所示

XPathExpression.Compile 调用失败:

未处理的异常:System.Xml.XPath.XPathException:由于未知函数,此查询需要 XsltContext。在 MS.Internal.Xml.XPath.FunctionQuery.SetXsltContext(XsltContext context) 在 MS.Internal.Xml 的 MS.Internal.Xml.XPath.CompiledXpathExpr.UndefinedXsltContext.ResolveFuncti on(String prefix, String name, XPathResultType[] ArgTypes)。 XPath.CompiledXpathExpr.SetContext(XmlNamespaceManager nsManager) 在 System.Xml.XPath.XPathExpression.Compile(String xpath, IXmlNamespaceResolver nsResolver)

有人知道在 XPathExpression.Compile 中使用现成的 XPath 函数的技巧吗?谢谢

0 投票
4 回答
74799 浏览

.net - 我可以在 XPath 表达式中使用正则表达式吗?

类似于.//div[@id='foo\d+]id='foo123'.

如果这很重要,我正在使用.NET。

0 投票
10 回答
17049 浏览

c# - 在 .NET 中如何最好地使用 XPath 和非常大的 XML 文件?

我需要在 C# 中对相当大的 XML 文件(这里可能超过千兆字节)进行一些处理,包括执行一些复杂的 xpath 查询。我遇到的问题是,我通常通过 System.XML 库执行此操作的标准方式喜欢在对整个文件执行任何操作之前将整个文件加载到内存中,这可能会导致这种大小的文件出现内存问题。

我根本不需要更新文件,只需阅读它们并查询其中包含的数据。一些 XPath 查询非常复杂,并且涉及多个级别的父子类型关系——我不确定这是否会影响使用流读取器而不是将数据作为块加载到内存中的能力。

我可以看到使其工作的一种方法是使用基于流的方法执行简单的分析,并且可能将 XPath 语句包装到 XSLT 转换中,然后我可以在文件中运行,尽管它看起来有点复杂。

或者,我知道 XPath 查询不会遇到某些元素,所以我想我可以根据它的原始树结构将文档分成一系列较小的片段,这些片段可能足够小,可以在内存中处理而无需造成太大的破坏。

我试图在这里解释我的目标,所以如果我在一般方法方面完全错误的树,我相信你们可以让我正确......