Как разобрать XML, возвращенный с помощью WebServices, в xQuery? - PullRequest
0 голосов
/ 22 апреля 2011

Я борюсь с этой проблемой уже несколько дней и буду искренне признателен за вашу помощь.У меня есть приложение Java, которое запрашивает несколько веб-сервисов, которые возвращают сообщение XML.Затем мое приложение анализирует эти множественные XML-сообщения, возвращаемые с помощью xquery.Исходя из того, что я понимаю, xquery нужен XML-документ для чтения XML, и для моего Java-приложения создание XML-документа для каждого возвращаемого XML-сервиса Web-сервисов будет тяжелым и замедлит время отклика.

Есть ли способ, что XML-строка, возвращаемая вызовом Webservices, может быть передана непосредственно в качестве ввода в xquery без создания XML-документа?XML из одного источника непротиворечив, но структура XML отличается в вызове нескольких веб-сервисов, поэтому мне нужна очень гибкая среда обработки приложений.

Заранее спасибо.Нил.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2011

Есть ли способ, что строка XML, возвращаемая вызовом Webservices, может быть передана непосредственно в качестве ввода в xquery без создания документа XML?

Нет, XQueryработает с документами XML. Вы можете передать строку в приложение XQuery, и она будет обрабатываться как строка, а не как документ XML.

Например, :

"<t name='Ann'/>"

может обрабатываться любой функцией, которая принимает строковые аргументы, например: string-length(), substring(), matches(), tokenize(), replace(), ... и т. Д.

Однако , пытаясь обработать эту строку как документ XML - например, попытаться оценить выражение XPath, например:

/t/@name 

, невозможно наэта строка , если конечно она не анализируется.

0 голосов
/ 22 апреля 2011

String является строкой, в то время как XQuery / XPath требует анализируемого объекта с пространствами имен, элементами и атрибутами. Вот почему требуется разбор.

Вы можете передать InputSource вместо DOM, но мне сказали, что он все равно создает DOM под капотом.

...