繁体   English   中英

清理并将HTML转换为XML以用于BaseX

[英]Clean and convert HTML to XML for BaseX

我想在HTML源上使用BaseX运行一些XQuery命令,这些源可能充满了必须删除的<script><style>节点以及必须具有一对的未关闭标签( <br><img> )。 (例如, 该页面的肮脏来源)

将HTML转换为XML ”建议使用Tidy,但是它没有GUI,并且在我的源代码上似乎无法正常工作(它不会输出任何内容),并且我怀疑它是否会删除脚本和其他不必要的标记。 顺便说一句,它很旧了。

由于找不到任何可以满足我需求的问题,我再次提出了问题。 因为它非常接近用于编码和查询的工具,所以我在这里询问了它。

BaseX集成了TagSoup ,可以将HTML转换为格式良好的XHTML。

大多数BaseX发行版已经捆绑了TagSoup,如果您是从Linux系统信息库中安装BaseX的,则可能需要手动添加它(例如,在Debian和Ubuntu上,它称为libtagsoup-java )。 上面链接的文档中提供了不同安装选项的更多详细信息。

然后,使用以下命令将TagSoup解析器设置为默认值

SET PARSER html

或在XQuery序言中使用

declare option db:parser "html";

之后,只需获取所需的文档即可。 您链接的Amazon网站的示例:

declare option db:parser "html";
doc('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=camera')

这应该可以,但是不能。 我正在查询主要开发者的原因(似乎是由于某些HTTP重定向),并且在问题解决后会更新答案(或者我知道为什么这不起作用)。 在此之前的解决方法是将文档提取为文本并将其解析为HTML:

html:parse(fetch:text('http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=camera')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM