Я пытаюсь размонтировать XML.
Это то, что мой XML выглядит как
<DeviceInventory2Response xmlns="http://tempuri.org/">
<DeviceInventory2Result xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Obj123 xmlns="">
<Id>1</Id>
<Name>abc</Name>
</Obj123>
<Obj456 xmlns="">
.
.
.
Я пытаюсь получить идентификатор и имя под Obj123. Однако, когда я запускаю свою команду unmarshal, я получаю следующую ошибку.
An Error: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://tempuri.org/", local:"DeviceInventory2Response"). Expected elements are (none)
Мой код выглядит так в основном классе:
Obj123 myObj123 = (Obj123) unmarshaller.unmarshal(inputSource);
И мой класс для Obj123 выглядит так:
package com.myProj.pkg;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement(name="Obj123")
public class Obj123 {
private String Id;
private String Name;
public String getId() {
return Id;
}
public String getName() {
return Name;
}
}
Я подумал, установив свой XMLRootElement, чтобы я мог пропустить первые 2 строки моего XML, но это, похоже, не происходит. Любые идеи?
Edit:
Вот как заключен мой контекст JAXB:
JAXBContext jaxbContext = JAXBContext.newInstance();
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Obj123 obj123 = (Obj123) unmarshaller.unmarshal(xmlStreamReader);