2

我们有一个外部 Web 服务,我们在 FAST 的自定义管道阶段访问该服务。我们的任务是获取此 Web 服务输出的 XML 并将其存储到范围字段中。在这一点上,我们已经尝试了以下事情:

  1. 将 Web 服务的 XML 输出直接输入到范围字段中(即使用document.Set('xml', webserviceOutput),其中xml是范围字段,'webserviceOutput' 的形式类似于<?xml version="1.0" encoding="UTF-8" ?><root><element>...</element></root>)。这不起作用,FAST 管道在日志中抱怨数据类型错误(即<type 'str'>)。

  2. 我们还尝试将 Web 服务的 XML 输出直接输入到平面字段中,然后使用 XMLParser 和 XMLScopifier 将字符串转换为范围字段所期望的正确格式。这也不起作用,FAST 管道抱怨我们平面字段中的 XML 数据无效。经过仔细检查,我们发现 FAST在将字符串存储到平面字段之前将XML Web 服务输出&lt;的所有尖括号都转义了。&gt;这似乎是 XMLParser 无法将字符串转换为 XMLScopifier 期望的正确对象的原因。

为了确定当我们第一次看到上面的第二个错误时发生了什么,我们从 Web 前端运行了一个简单的 FQL 查询(即http://localhost:15100/cgi-bin/xsearch?offset=0&hits=10&query=a)并查看返回的 XML 的来源(例如ctrl+u在 Firefox 上)。

感兴趣的平面字段的 XML 值中的尖括号和引号都已转义为&lt; &gt;and &quot;。我们最初认为这可能是浏览器试图正确显示 XML 字符串的产物,但在正文字段(即 )中并没有发生同样的事情<FIELD NAME="body">,它的字符串值也包含标签(例如<sep/>convert the whole structure to <key>a</key> series of maps <sep/>create <key>a</key> dao that handles all interaction with<sep/>)。

FAST 也有可能在结果发送到浏览器之前转义字符,尽管我不确定我们如何确定是否是这种情况。

我们如何解决这个问题?

我们目前基本上坚持这一点,完全不知道如何从这里继续前进,所以任何帮助或提示将不胜感激!

非常感谢!

4

0 回答 0