eclipselink moxy xpath - выбор всех дочерних элементов текущего узла или всех элементов в документе с определенным именем - PullRequest
1 голос
/ 06 марта 2012

У меня есть этот xpath для moxy в классе jaxb

@ XmlPath ("child :: * / REG") записей публичного списка;

, но он не отменяет маршализацию xmlдокумент правильно.переменная списка, называемая записями, пуста.

я также пытался

@ XmlPath ("* / REG") публичный список записей;

я также пытался

@ XmlPath ("// REG") записи публичного списка;

без радости

но если я сделаю

@ XmlPath ("BANKGIRO / REG") публичные записи списка;

все в порядке, и список заполнен.

Я еще не просмотрел источник, но я предполагаю, что этот тип xpath еще не поддерживается.Я проверил все свои значения xpath в верификаторе xpath на предмет работоспособности, и все перечисленные выше значения xpath в порядке (все значения xpath действительны для узла контекста, на котором я размещен).

1 Ответ

1 голос
/ 06 марта 2012

EclipseLink JAXB (MOXy) в настоящее время не поддерживает XPath, например: @XmlPath("child::*/REG"). Мы сосредоточились на поддержке операторов XPath, которые предоставляют достаточно информации для маршалинга, а также для демаршаллинга. Например, ясно, что означает @XmlPath("child::*/REG") для чтения, но с точки зрения неоднозначности при записи этого объекта обратно в XML или JSON. Если вы заинтересованы в такой поддержке, пожалуйста, введите запрос на улучшение:

MOXy поддерживает XPath как:

  • @ XmlPath (".") // Отображение на собственный узел, полезно при отображении двух объектов на один элемент
  • @ XmlPath ("@ foo") // Сопоставить с атрибутом
  • @ XmlPath ("foo") // Сопоставить с элементом
  • @ XmlPath ("foo [2]") // Сопоставить со вторым вхождением
  • @ XmlPath ("foo [@ bar = 'Hello World']") // Сопоставить элементу foo с атрибутом bar со значением "Hello World"
  • @ XmlPath ("ns1: foo / ns2: @bar") // Сопоставление с узлами, определенными в пространстве имен

Для получения дополнительной информации

...