У меня есть xml-документ:
<root>
<device>
<v1>blah</v1>
</device>
</root>
Я хочу разобрать этот документ, но
<device>
<v1>blah</v1>
</device>
часть. Я хочу игнорировать корневой элемент. Как я могу развязать это с помощью jaxb?
Предполагая, что ваше определение JAXB ничего не знает о <root>, т.е. Вы не можете просто развязать все это и заглянуть внутрь результирующего объекта Root:
Вы можете сделать следующее:
XMLStreamReader
.XMLStreamReader
к элементу, который вы хотите развязать.XMLStreamReader
.пример
import javax.xml.bind.*;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;
public class UnmarshalDemo {
public static void main(String[] args) throws Exception {
// Parse the XML with a StAX XMLStreamReader
XMLInputFactory xif = XMLInputFactory.newFactory();
StreamSource xml = new StreamSource("input.xml");
XMLStreamReader xsr = xif.createXMLStreamReader(xml);
// Advance the XMLStreamReader to the element you wish to unmarshal
xsr.nextTag();
while(!xsr.getLocalName().equals("device")) {
xsr.nextTag();
}
// Use one of the unmarshal methods that take an XMLStreamReader
JAXBContext jc = JAXBContext.newInstance(Device.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Device device = (Device) unmarshaller.unmarshal(xsr);
xsr.close();
}
}
Чтобы получить больше информации