javascript - 使用 JavaScript 在 HTML 中运行 XPath 表达式 SVG

标签 javascript xpath svg

我正在尝试对嵌入在 html 中的 svg 运行 xpath 表达式。我只是不知道如何设置参数。我想从给定的命名空间中找到具有任意属性的元素。我使用以下 xpath 表达式:

var xpathexp = "//*[@*[namespace-uri()='"+this.typo7namespace+"']]";

我测试了这个表达式,它按预期工作。 这是查找结果集的代码:

var result = this.svgdocument.contentDocument.evaluate( xpathexp, this.svgdocument.documentElement, null, XPathResult.ANY_TYPE, null );

谁能告诉我如何处理命名空间、命名空间解析器,或者发布一个教程链接??

问候...

最佳答案

这是关于使用 XPath 的 Mozilla 教程: https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript

这是关于编写自定义命名空间解析器的: https://developer.mozilla.org/en/Introduction_to_using_XPath_in_JavaScript#Implementing_a_User_Defined_Namespace_Resolver

不过,我发现这些接口(interface)相当笨拙,所以我编写了一个抽象层,它将采用 xpath 字符串和上下文节点,并返回一个常规的 js 数组。它在浏览器中运行,并在 Mozilla Rhino 下嵌入到 Java 中: https://svn.apache.org/repos/asf/commons/sandbox/gsoc/2010/scxml-js/trunk/src/javascript/scxml/cgf/util/xpath.js

除了 IE6-9 之外,以上所有内容都应该适用于所有浏览器。

IE6-8 本身不支持 SVG,所以这对你的问题来说应该不太重要。不过,为了完整起见,这里有一篇很好的文章描述了早期 IE8 中的 XPath 支持,包括对解析 namespace 的支持: http://www.nczonline.net/blog/2009/04/04/xpath-in-javascript-part-3/

显然,IE9 也不在浏览器中包含对 XPath 的支持,这更成问题,因为它本身就支持 SVG。此处最好的方法可能是使用 ActiveX 来处理 MSXML API: IE9 selectSingleNode missing from beta, how to overcome this in JavaScript?

关于javascript - 使用 JavaScript 在 HTML 中运行 XPath 表达式 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6123657/

相关文章:

javascript - 如果单击多个复选框中的一个复选框,如何触发函数

javascript - ESLint 意外使用 isNaN

javascript - 通过更新变量更新 D3 图表的大小

google-chrome - 提取XPath并在Google Chrome中运行

javascript - svg 图像上的悬停效果不适用于与 Joomla 中的单篇文章链接的页面

css - Svg 线半实线半虚线

javascript - Onsubmit 表单验证功能在 IE 中不起作用

javascript - 通过动态创建的 html 传递元素引用

c# - 我如何使用 XPathNavigator 访问 XML Child 的索引?

python - 无法使用我的 scraper 中定义的 xpath 获取项目