gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:04:19 26 4
gpt4 key购买 nike

我正在尝试对嵌入在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com