JAXB应该忽略元素
结构JAXB应该忽略元素,jaxb,unmarshalling,Jaxb,Unmarshalling,结构 <html> <span><h1>test</h1></span> <table> </table> </html> 解组为空。您可以在XMLStreamReader上利用StAXStreamFilter,以便不将要忽略的元素报告为事件。然后,您可以使用JAXB从XMLStreamReader解组 @XmlAccessorType(XmlAccessType.FIELD)
<html>
<span><h1>test</h1></span>
<table>
</table>
</html>
解组为空。您可以在
XMLStreamReader
上利用StAXStreamFilter
,以便不将要忽略的元素报告为事件。然后,您可以使用JAXB从XMLStreamReader
解组
@XmlAccessorType(XmlAccessType.FIELD)
public class HtmlTag
{
@XmlAnyElement
List<org.w3c.dom.Element> elements;
}
import javax.xml.bind.*;
导入javax.xml.stream.*;
导入javax.xml.transform.stream.StreamSource;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(HtmlTag.class);
XMLInputFactory xif=XMLInputFactory.newFactory();
StreamSource xml=newstreamsource(“src/forum17613060/input.xml”);
XMLStreamReader xsr=xif.createXMLStreamReader(xml);
xsr=xif.createFiltereReader(xsr,新的StreamFilter(){
@凌驾
公共布尔接受(XMLStreamReader){
if(reader.isStartElement()| | reader.isEndElement()){
字符串localName=reader.getLocalName();
返回!“span”.equals(localName)&&!“div”.equals(localName);
}
返回true;
}
});
Unmarshaller Unmarshaller=jc.createUnmarshaller();
HtmlTag HtmlTag=unmarshaller.unmarshal(xsr,HtmlTag.class).getValue();
System.out.println(htmlTag.h1);
}
}
您可以在XMLStreamReader
上利用StAXStreamFilter
,以便不将要忽略的元素报告为事件。然后,您可以使用JAXB从XMLStreamReader
解组
import javax.xml.bind.*;
导入javax.xml.stream.*;
导入javax.xml.transform.stream.StreamSource;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(HtmlTag.class);
XMLInputFactory xif=XMLInputFactory.newFactory();
StreamSource xml=newstreamsource(“src/forum17613060/input.xml”);
XMLStreamReader xsr=xif.createXMLStreamReader(xml);
xsr=xif.createFiltereReader(xsr,新的StreamFilter(){
@凌驾
公共布尔接受(XMLStreamReader){
if(reader.isStartElement()| | reader.isEndElement()){
字符串localName=reader.getLocalName();
返回!“span”.equals(localName)&&!“div”.equals(localName);
}
返回true;
}
});
Unmarshaller Unmarshaller=jc.createUnmarshaller();
HtmlTag HtmlTag=unmarshaller.unmarshal(xsr,HtmlTag.class).getValue();
System.out.println(htmlTag.h1);
}
}
。。。结合afterUnmarshal()确定。。。。与afterUnmarshal()结合使用,可以。
@XmlAccessorType(XmlAccessType.FIELD)
public class HtmlTag
{
@XmlAnyElement
List<org.w3c.dom.Element> elements;
}
HtmlTag htmlTag = //...
Element firstElement = htmlTag.elements.get(0); // this is first element,
// currently it is <span>
firstElement.getElementsByTagName("h1").item(0).getTextContent(); // return 'test'