2009-03-12 2 views
0

Я использую XPath 1.0 для обработки входящих сообщений веб-сервисов. Это может быть довольно сложно сделать правильно, если используются schema data types, потому что XPath 1.0 не распознает их (XPath 2.0 делает, но, похоже, нет полной версии с открытым исходным кодом. Не уверен, что Saxon-B делает это).Сопоставление типов данных XPath 1.0 с java

Например, литералы «true» и «false» в xs: boolean представляют собой логические значения True и False в соответствии с xml-схемой, но XPath 1.0 оценит их оба на True.

Это означает, что оценка /test против <test>false</test> действительно возвращает значение True.

То же самое относится и к другим типам данных: «12.78e-2» является допустимым значением для xs: double, но имеет значение Double.NaN.

javax.xml.datatype содержит сопоставления типов для продолжительности и dateTime, но это все.

XMLBeans содержит простой в использовании конвертеров между Java и схемы встроенных типов данных:

Node n = jaxp13XPathTemplate.evaluateAsNode(expression, context); 
boolean b = XmlBoolean.Factory.parse(n).getBooleanValue(); 

Существуют ли какие-либо другие инструменты, которые могут быть полезны (и нет, я не ищу для полноценного XML-привязка)?

ответ

0

Я знаю, что вы сказали, что не хотите полноценной рамки привязки, но вы посмотрели на jibx. Может быть немного больно писать файлы привязки, но вы можете сгенерировать привязки из XML-схемы, если у вас есть одно, а так быстро, что это неверно.

В качестве альтернативы использованию XPath вы считали разбор xml в dom, который вы могли бы манипулировать?

Karl

+0

Карл, я до сих пор не смотрел JiBX. Я бы предпочел, если это возможно, избегать использования элемента расширения кода. Можете ли вы подробно рассказать о своей идее DOM? Что именно я получу, имея DOM? В любом случае, спасибо за ввод! –

+0

Если вы хотите обрабатывать входящий XML, всегда желательно, чтобы XML в какой-то безопасный формат, как правило, являлся объектом, помогающим упростить обработку. DOM не являются безопасными по типу, но в зависимости от того, насколько сложна ваша xpath, вам может быть проще извлечь и обработать данные: http://www.jdom.org/ – Karl

+0

Я знаю о JDOM и друзьях, но я использую XPath для причина. Вот почему я спросил о «Mapping XPath 1.0 типы данных для java» конкретно, а не об обработке XML в целом. –

Смежные вопросы