java - WebHarvest 中的 Xquery 错误

标签 java screen-scraping xquery webharvest

我正在使用WebHarvest解析一些html。我在 WebHarvest 的 ide 中的以下函数中收到以下错误,我不明白出了什么问题。我正在尝试创建一个修剪字符串的函数。

错误:

Error executing XQuery expression (Xquery=[declare variable $xqsource external; let $result := normalize-space($xqsource) return $result])!

Edit2:日志报告以下 SAX 错误:

[...] Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog

我不明白这在这种情况下意味着什么。

函数的参数:sourceString,要修剪的字符串

<function name="trim">
    <return>
        <xquery>
            <xq-param name="xqsource">
                <var name="sourceString" />
            </xq-param>
            <xq-expression><![CDATA[
                declare variable $xqsource external;

                let $result := normalize-space($xqsource)
                    return 
                     $result
                ]]>
            </xq-expression>
        </xquery>
    </return>
</function>

编辑:sourceString 是由字母数字字符、换行符和空格组成的字符串,如

" blabla - bla2

"

最佳答案

xq-param 的默认类型是 node() (参见 manual )。因此,WebHarvest 尝试将您的变量内容解析为 XML(SAXParseException 是 XML 解析错误,而不是特定的 XQuery 错误)。

您应该在参数中添加一个 string 类型声明:

<xq-param name="xqsource" type="string">
  <var name="sourceString" />
</xq-param>

这有帮助吗?

关于java - WebHarvest 中的 Xquery 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419400/

相关文章:

sql - 修改xquery中的sql server xml元素名称变量

xquery - 高效的 XQuery 查询来确定不存在元素的文档

java - 如何在未安装 MySQL 的计算机上运行使用 MySQL DB 的 Java 应用程序?

java - 将 csrf token 传递给客户端应用程序

screen-scraping - Visual Web Scraper 的实现技术是什么?

objective-c - 如何在 Objective C 中使用 NSData 存储图像

c# - SQL UPDATE 没有更新数据库,我的 SQL 语句有问题吗?

sql - 请求其他表中至少有 2 条记录

使用 cucumber-junit 和 Java 通过步骤定义文件执行 cucumber 功能文件时出现 java.lang.NullPointerException

java - Logback 文件附加程序不会立即刷新