У нас есть внешний веб-сервис, к которому мы обращаемся на этапе пользовательского конвейера в FAST. Наша задача - получить XML, который выводится этим веб-сервисом, и сохранить его в поле области действия. На данный момент мы попробовали следующие вещи:
Ввод XML-вывода веб-службы непосредственно в поле области действия (т. Е. С использованием document.Set('xml', webserviceOutput)
, где xml
- поле области действия, а 'webserviceOutput' имеет форму, похожую на <?xml version="1.0" encoding="UTF-8" ?><root><element>...</element></root>
). Это не сработало, и конвейер FAST пожаловался в журналах, что данные были неправильного типа (т.е. <type 'str'>
).
Мы также попытались ввести вывод XML веб-службы непосредственно в плоское поле, а затем с помощью XMLParser и XMLScopifier преобразовать строку в правильный формат, ожидаемый полем области. Это также не сработало, и конвейер FAST пожаловался на то, что данные XML в нашем плоском поле были недействительными. При ближайшем рассмотрении мы обнаружили, что FAST избежал всех угловых скобок вывода веб-службы XML в <
и >
перед сохранением строки в плоском поле. Похоже, это является причиной того, что XMLParser не может преобразовать строку в нужный объект, ожидаемый XMLScopifier.
Чтобы определить, что происходит, когда мы впервые увидели вторую ошибку выше, мы запустили простой FQL-запрос из веб-интерфейса (т. Е. http://localhost:15100/cgi-bin/xsearch?offset=0&hits=10&query=a) и посмотрели на источник возвращенного XML (например, * 1021). * Ctrl + U в Firefox).
Угловые скобки и кавычки в значении XML плоского поля интереса были экранированы до <
>
и "
. Сначала мы думали, что это может быть следствием того, что браузер пытается правильно отобразить строку 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 экранирует символы непосредственно перед отправкой результатов в браузер, хотя я не уверен, как мы можем определить, так ли это.
Как мы можем решить это?
В настоящее время мы в основном застряли на этом и совершенно не знаем, как двигаться дальше, поэтому любая помощь или подсказки будут высоко оценены!
Большое спасибо!