2013-07-12 3 views

ответ

1
@XmlAccessorType(XmlAccessType.FIELD) 
public class HtmlTag 
{ 
    @XmlAnyElement 
    List<org.w3c.dom.Element> elements; 
} 

получить test

снабжать струной, тетивой и т.п.
HtmlTag htmlTag = //... 
Element firstElement = htmlTag.elements.get(0); // this is first element, 
             // currently it is <span> 
firstElement.getElementsByTagName("h1").item(0).getTextContent(); // return 'test' 
+0

... в сочетании с afterUnmarshal() ok. –

0

Вы можете использовать в StAX StreamFilter на XMLStreamReader, так что элементы, которые вы хотите игнорировать, не сообщается, как события. Затем вы можете развязать с XMLStreamReader с JAXB.

import javax.xml.bind.*; 
import javax.xml.stream.*; 
import javax.xml.transform.stream.StreamSource; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(HtmlTag.class); 

     XMLInputFactory xif = XMLInputFactory.newFactory(); 
     StreamSource xml = new StreamSource("src/forum17613060/input.xml"); 
     XMLStreamReader xsr = xif.createXMLStreamReader(xml); 
     xsr = xif.createFilteredReader(xsr, new StreamFilter() { 

      @Override 
      public boolean accept(XMLStreamReader reader) { 
       if(reader.isStartElement() || reader.isEndElement()) { 
        String localName = reader.getLocalName(); 
        return !"span".equals(localName) && !"div".equals(localName); 
       } 
       return true; 

      } 

     }); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     HtmlTag htmlTag = unmarshaller.unmarshal(xsr, HtmlTag.class).getValue(); 
     System.out.println(htmlTag.h1); 
    } 

} 
Смежные вопросы