eclipselink moxy xpath — выбор всех дочерних элементов текущего узла или всех элементов в документе с определенным именем

у меня есть этот xpath, определенный для moxy в классе jaxb

@XmlPath("child::*/REG") общедоступные записи списка;

но он не будет корректно разбирать XML-документ. переменная списка, называемая элементами, пуста.

я тоже пробовал

@XmlPath("*/REG") общедоступные записи списка;

я тоже пробовал

@XmlPath("//REG") общедоступные записи списка;

без радости

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

@XmlPath("BANKGIRO/REG") Записи общедоступного списка;

это нормально, и список заполнен.

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


person iou1    schedule 06.03.2012    source источник
comment
Похоже, используемое вами средство не является процессором, совместимым с XPath. Вы пробовали */REG ?   -  person Dimitre Novatchev    schedule 06.03.2012
comment
одна из первых вещей, которые я попробовал на самом деле. это тоже оказалось безрезультатным   -  person iou1    schedule 06.03.2012
comment
я добавил */REG в список выше для ясности   -  person iou1    schedule 06.03.2012


Ответы (1)


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") // Сопоставление с узлами с указанием пространства имен

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

person bdoughan    schedule 06.03.2012
comment
Я думал, что это будет потому, что сопоставление обратно в xml будет неоднозначным, но простой XmlElement(name=blah) (используйте xpath при десортировке и XmlElement при маршаллинге) кажется мне выходом. однако я осознаю, что разветвления моего решения могут означать, что оно не так просто, как кажется. в остальном отличный продукт. я подниму запрос - person iou1; 06.03.2012
comment
Я рад слышать, что вам нравится MOXy. Это определенно интересный вариант использования. Буду признателен за любые ваши мысли о том, как могут выглядеть метаданные. - person bdoughan; 06.03.2012
comment
я уже отправил запрос на изменение по адресу bugs.eclipse.org/bugs/ show_bug.cgi?id=373400. надеюсь, я смогу помочь. просто чтобы другие знали | оператор также не поддерживается. - person iou1; 06.03.2012