У меня есть приведенный ниже xml, в котором повторяются <item>
узлы
<rss xmlns:sk="http://example.com/sk" version="2.0">
<channel>
<item>
<guid isPermaLink="false">10833210</guid>
<url></url>
<language>ENG</language>
<countryOfOrigin></countryOfOrigin>
<sk:programType>Prg1</sk:programType>
<sk:state>0</sk:state>
</item>
</channel>
</rss>
Я разбиваю xml на основе <item>
и передаю только <item>
в виде строки в демаршаллер JAXB.
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
JAXBContext jc = JAXBContext.newInstance(Item.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setProperty("sky","http://example.com/sk");
UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();
xr.setContentHandler(unmarshallerHandler);
String xmlProgram = exchange.getIn().getBody(String.class);
StringReader reader = new StringReader(xmlProgram);
InputSource xmlSource = new InputSource(reader);
xr.parse(xmlSource);
Item item = (Item) unmarshallerHandler.getResult();
Элемент Item.java выглядит следующим образом:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "item")
public class Item {
@XmlElement(name = "guid")
private String id
@XmlElement
private String url;
@XmlElement
private String language;
@XmlElement
private String countryOfOrigin;
@XmlElement(name = "sk:programType", namespace = "http://example.com/sk")
private String programType;
@XmlElement(name = "sk:state", namespace = "http://example.com/sk")
private String state;
}
Проблема заключается в том, что после демонтажа узла в Item.java значения programType и state равны нулю.Я также попытался добавить package-info.java.И пространство имен, и информация о пакете не работали для меня.Любые указатели были бы очень полезны ..