У меня есть приложение, делающее XML < -> конверсии с использованием Jaxb и автоматически создаваемых классов с maven-jaxb2-plugin.Jaxb: как unmarshall xs: любая часть XML-строки?
Где-то глубоко в моей схеме, у меня есть возможность ввести «ЛЮБОЙ» xml.
Обновление: это лучше описывает мою схему. Некоторые известные XML-обертывания полностью неизвестной части («любая» часть).
<xs:complexType name="MessageType">
<xs:sequence>
<xs:element name="XmlAnyPayload" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OtherElements">
....
</xs:sequence>
Это карты (по JAXB) к внутреннему классу, как это.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"any"
})
public static class XmlAnyPayload {
@XmlAnyElement(lax = true)
protected Object any;
Когда я разобрал всю структуру, это не проблема. «Объект любой» отобразит в org.apache.xerces.dom.ElementNSImpl. Теперь я хочу восстановить объект Java вручную, а затем перейти к XML. Как взять некоторый случайный XML и поместить в любой элемент (org.apache.xerces.dom.ElementNSImpl), чтобы иметь возможность создавать объект Java?
Кроме того, следующий случай, когда у меня есть этот элемент как java, я хочу размонтировать эту самую часть (чтобы извлечь XML-строку этого элемента). Но это невозможно. Я получаю исключение из корневых элементов. Но нельзя аннотировать ElementNSImpl.
unable to marshal type "com.sun.org.apache.xerces.internal.dom.ElementNSImpl" as an element because it is missing an @XmlRootElement annotation
Есть ли у вас какие-либо предложения по устранению этих проблем?
Благодаря хорошему вкладу в этот домен мне удалось это решить. Один из способов, я застрял с моим узлом «Дом». Просто добавьте простой синтаксический анализ XML, чтобы получить dom из строки. В другом случае я прибегал к работе с XML в пространстве DOM (XPATH), так как он фактически спас меня от некоторых переключений времени и контекста. XPATH на самом деле действительно хорош, чтобы снизить сложность кода. –