如果要
s#作为集合处理这些项目:
import java.io.Serializable;import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="xx")public class XMLXx implements Serializable { private static final long serialVersionUID = 4064597372833234503L; private List<XMLSite> sites; @XmlElement(name="s") public List<XMLSite> getSites() { return sites; } public void setSites(List<XMLSite> sites) { this.sites = sites; }}
然后,你可以不喜欢愚弄JAXB以为所有元素(
s1,
s2等)实际上是被称为
s:
import java.io.FileInputStream;import javax.xml.bind.JAXBContext;import javax.xml.bind.Unmarshaller;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.util.StreamReaderDelegate;public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(XMLXx.class); XMLInputFactory xif = XMLInputFactory.newInstance(); XMLStreamReader xsr = xif.createXMLStreamReader(new FileInputStream("input.xml")); xsr = new SiteStreamReaderDelegate(xsr); Unmarshaller unmarshaller = jc.createUnmarshaller(); XMLXx object = (XMLXx) unmarshaller.unmarshal(xsr); System.out.println(object.getSites().size()); } private static class SiteStreamReaderDelegate extends StreamReaderDelegate { public SiteStreamReaderDelegate(XMLStreamReader xsr) { super(xsr); } @Override public String getLocalName() { String localName = super.getLocalName(); if(localName.startsWith("s")) { return "s"; } return localName; } }}
- http://bdoughan.blogspot.com/2010/12/case-insensitive-unmarshalling.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)