有没有一种方式在Emacs中交互式搜索与给定xpath表达式匹配的节点呢?我想要类似于re-forward-search的功能,但是不是使用正则表达式,而是输入一个xpath表达式。
关于XPath查询,我没有答案,抱歉。但您可以尝试使用Icicles搜索搜索键M-s M-s x
和M-s M-s X
(命令icicle-search-xml-element
和icicle-search-xml-element-text-node
)。
这些命令允许您搜索与您提供的正则表达式匹配的顶级XML元素的内容和text()
节点。
对于icicle-search-xml-element
,可以采用以下任何形式:
<ELEMENTNAME>...</ELEMENTNAME>
<ELEMENTNAME ATTRIBUTE1="..."...>...</ELEMENTNAME>
<ELEMENTNAME/>
<ELEMENTNAME ATTRIBUTE1="...".../>
我很久以前也做过类似的事情。我现在无法提供任何详细信息,但我会概述一下我的方法。
我创建了一些 Emacs 函数来与本地 XML 数据库进行交互。我曾经使用 MarkLogic 服务器和 Berkley DB XML 数据库两次完成这项工作。其中一个函数仅仅是查询数据库。另一个函数将发送包括 Emacs 缓冲区或缓冲区选择的 XQuery 查询。
本地 XML 数据库服务器将处理查询并返回结果,而我的 Emacs 函数将在一个 result 缓冲区中呈现结果。
这种方法使我能够使用 XPath 和 XQuery 进行查询,这是一种更强大的查询语言,包括 XPath。(我很久以前写过关于 XQuery 的文章,在这里阅读:https://www.ibm.com/developerworks/library/x-xqueryxpath/)
尽管所有这些听起来都很困难,但它的实际操作却非常容易。