Как я могу ввести данные XML из внешнего веб-сервиса в поле области во время пользовательской стадии конвейера FAST ESP, написанной на python? - PullRequest
2 голосов
/ 28 января 2012

У нас есть внешний веб-сервис, к которому мы обращаемся на этапе пользовательского конвейера в FAST. Наша задача - получить XML, который выводится этим веб-сервисом, и сохранить его в поле области действия. На данный момент мы попробовали следующие вещи:

  1. Ввод XML-вывода веб-службы непосредственно в поле области действия (т. Е. С использованием document.Set('xml', webserviceOutput), где xml - поле области действия, а 'webserviceOutput' имеет форму, похожую на <?xml version="1.0" encoding="UTF-8" ?><root><element>...</element></root>). Это не сработало, и конвейер FAST пожаловался в журналах, что данные были неправильного типа (т.е. <type 'str'>).

  2. Мы также попытались ввести вывод XML веб-службы непосредственно в плоское поле, а затем с помощью XMLParser и XMLScopifier преобразовать строку в правильный формат, ожидаемый полем области. Это также не сработало, и конвейер FAST пожаловался на то, что данные XML в нашем плоском поле были недействительными. При ближайшем рассмотрении мы обнаружили, что FAST избежал всех угловых скобок вывода веб-службы XML в &lt; и &gt; перед сохранением строки в плоском поле. Похоже, это является причиной того, что XMLParser не может преобразовать строку в нужный объект, ожидаемый XMLScopifier.

Чтобы определить, что происходит, когда мы впервые увидели вторую ошибку выше, мы запустили простой FQL-запрос из веб-интерфейса (т. Е. http://localhost:15100/cgi-bin/xsearch?offset=0&hits=10&query=a) и посмотрели на источник возвращенного XML (например, * 1021). * Ctrl + U в Firefox).

Угловые скобки и кавычки в значении XML плоского поля интереса были экранированы до &lt; &gt; и &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 экранирует символы непосредственно перед отправкой результатов в браузер, хотя я не уверен, как мы можем определить, так ли это.

Как мы можем решить это?

В настоящее время мы в основном застряли на этом и совершенно не знаем, как двигаться дальше, поэтому любая помощь или подсказки будут высоко оценены!

Большое спасибо!

...