Отображение типов данных XPath 1.0 в Java - PullRequest
0 голосов
/ 12 марта 2009

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

Например, литералы "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 содержит сопоставления типов для duration и dateTime, но это все.

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

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

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

1 Ответ

0 голосов
/ 12 марта 2009

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

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

Karl

...