下面列出了怎么用javax.xml.bind.Binder的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
private Object convertToJAXBObject(Source source) throws Exception {
//this is entirely to work around http://java.net/jira/browse/JAXB-909
//if that bug is ever fixed and we can detect it, we can remove this
//complete and total HACK HACK HACK and replace with just:
//Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
//JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(source);
//return jaxbElement.getValue();
Document d = StaxUtils.read(source);
Binder<Node> binder = jaxbContext.createBinder();
JAXBElement<?> jaxbElement = (JAXBElement<?>)binder.unmarshal(d);
walkDom("", d.getDocumentElement(), binder, null);
return jaxbElement.getValue();
}
private void walkDom(String pfx, Element element, Binder<Node> binder, Object parent) {
try {
Object o = binder.getJAXBNode(element);
if (o instanceof JAXBElement) {
o = ((JAXBElement<?>)o).getValue();
}
//System.out.println(pfx + DOMUtils.getElementQName(element) + " -> "
// + (o == null ? "null" : o.getClass()));
if (o == null && parent != null) {
// if it's not able to bind to an object, it's possibly an xsd:any
// we'll check the parent for the standard "any" and replace with
// the original element.
Field f = parent.getClass().getDeclaredField("any");
if (f.getAnnotation(XmlAnyElement.class) != null) {
Object old = ReflectionUtil.setAccessible(f).get(parent);
if (old instanceof Element
&& DOMUtils.getElementQName(element).equals(DOMUtils.getElementQName((Element)old))) {
ReflectionUtil.setAccessible(f).set(parent, element);
}
}
}
if (o == null) {
return;
}
Node nd = element.getFirstChild();
while (nd != null) {
if (nd instanceof Element) {
walkDom(pfx + " ", (Element)nd, binder, o);
}
nd = nd.getNextSibling();
}
} catch (Throwable t) {
//ignore -this is a complete hack anyway
}
}
private Object convertToJAXBObject(Source source) throws Exception {
//this is entirely to work around http://java.net/jira/browse/JAXB-909
//if that bug is ever fixed and we can detect it, we can remove this
//complete and total HACK HACK HACK and replace with just:
//Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
//JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(source);
//return jaxbElement.getValue();
Document d = StaxUtils.read(source);
Binder<Node> binder = jaxbContext.createBinder();
JAXBElement<?> jaxbElement = (JAXBElement<?>)binder.unmarshal(d);
walkDom("", d.getDocumentElement(), binder, null);
return jaxbElement.getValue();
}
private void walkDom(String pfx, Element element, Binder<Node> binder, Object parent) {
try {
Object o = binder.getJAXBNode(element);
if (o instanceof JAXBElement) {
o = ((JAXBElement<?>)o).getValue();
}
//System.out.println(pfx + DOMUtils.getElementQName(element) + " -> "
// + (o == null ? "null" : o.getClass()));
if (o == null && parent != null) {
// if it's not able to bind to an object, it's possibly an xsd:any
// we'll check the parent for the standard "any" and replace with
// the original element.
Field f = parent.getClass().getDeclaredField("any");
if (f.getAnnotation(XmlAnyElement.class) != null) {
Object old = ReflectionUtil.setAccessible(f).get(parent);
if (old instanceof Element
&& DOMUtils.getElementQName(element).equals(DOMUtils.getElementQName((Element)old))) {
ReflectionUtil.setAccessible(f).set(parent, element);
}
}
}
if (o == null) {
return;
}
Node nd = element.getFirstChild();
while (nd != null) {
if (nd instanceof Element) {
walkDom(pfx + " ", (Element)nd, binder, o);
}
nd = nd.getNextSibling();
}
} catch (Throwable t) {
//ignore -this is a complete hack anyway
}
}
private Object convertToJAXBObject(Source source) throws Exception {
//this is entirely to work around http://java.net/jira/browse/JAXB-909
//if that bug is ever fixed and we can detect it, we can remove this
//complete and total HACK HACK HACK and replace with just:
//Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
//JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(source);
//return jaxbElement.getValue();
Document d = StaxUtils.read(source);
Binder<Node> binder = jaxbContext.createBinder();
JAXBElement<?> jaxbElement = (JAXBElement<?>)binder.unmarshal(d);
walkDom("", d.getDocumentElement(), binder, null);
return jaxbElement.getValue();
}
private void walkDom(String pfx, Element element, Binder<Node> binder, Object parent) {
try {
Object o = binder.getJAXBNode(element);
if (o instanceof JAXBElement) {
o = ((JAXBElement<?>)o).getValue();
}
//System.out.println(pfx + DOMUtils.getElementQName(element) + " -> "
// + (o == null ? "null" : o.getClass()));
if (o == null && parent != null) {
// if it's not able to bind to an object, it's possibly an xsd:any
// we'll check the parent for the standard "any" and replace with
// the original element.
Field f = parent.getClass().getDeclaredField("any");
if (f.getAnnotation(XmlAnyElement.class) != null) {
Object old = ReflectionUtil.setAccessible(f).get(parent);
if (old instanceof Element
&& DOMUtils.getElementQName(element).equals(DOMUtils.getElementQName((Element)old))) {
ReflectionUtil.setAccessible(f).set(parent, element);
}
}
}
if (o == null) {
return;
}
Node nd = element.getFirstChild();
while (nd != null) {
if (nd instanceof Element) {
walkDom(pfx + " ", (Element)nd, binder, o);
}
nd = nd.getNextSibling();
}
} catch (Throwable t) {
//ignore -this is a complete hack anyway
}
}
private Object convertToJAXBObject(Source source) throws Exception {
//this is entirely to work around http://java.net/jira/browse/JAXB-909
//if that bug is ever fixed and we can detect it, we can remove this
//complete and total HACK HACK HACK and replace with just:
//Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
//JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(source);
//return jaxbElement.getValue();
Document d = StaxUtils.read(source);
Binder<Node> binder = jaxbContext.createBinder();
JAXBElement<?> jaxbElement = (JAXBElement<?>)binder.unmarshal(d);
walkDom("", d.getDocumentElement(), binder, null);
return jaxbElement.getValue();
}
private void walkDom(String pfx, Element element, Binder<Node> binder, Object parent) {
try {
Object o = binder.getJAXBNode(element);
if (o instanceof JAXBElement) {
o = ((JAXBElement<?>)o).getValue();
}
//System.out.println(pfx + DOMUtils.getElementQName(element) + " -> "
// + (o == null ? "null" : o.getClass()));
if (o == null && parent != null) {
// if it's not able to bind to an object, it's possibly an xsd:any
// we'll check the parent for the standard "any" and replace with
// the original element.
Field f = parent.getClass().getDeclaredField("any");
if (f.getAnnotation(XmlAnyElement.class) != null) {
Object old = ReflectionUtil.setAccessible(f).get(parent);
if (old instanceof Element
&& DOMUtils.getElementQName(element).equals(DOMUtils.getElementQName((Element)old))) {
ReflectionUtil.setAccessible(f).set(parent, element);
}
}
}
if (o == null) {
return;
}
Node nd = element.getFirstChild();
while (nd != null) {
if (nd instanceof Element) {
walkDom(pfx + " ", (Element)nd, binder, o);
}
nd = nd.getNextSibling();
}
} catch (Throwable t) {
//ignore -this is a complete hack anyway
}
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
@Override
public <T> Binder<T> createBinder(Class<T> domType) {
if(domType==Node.class)
return (Binder<T>)createBinder();
else
return super.createBinder(domType);
}
private Object convertToJAXBObject(Source source) throws Exception {
//this is entirely to work around http://java.net/jira/browse/JAXB-909
//if that bug is ever fixed and we can detect it, we can remove this
//complete and total HACK HACK HACK and replace with just:
//Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
//JAXBElement<?> jaxbElement = (JAXBElement<?>) unmarshaller.unmarshal(source);
//return jaxbElement.getValue();
Document d = StaxUtils.read(source);
Binder<Node> binder = jaxbContext.createBinder();
JAXBElement<?> jaxbElement = (JAXBElement<?>)binder.unmarshal(d);
walkDom("", d.getDocumentElement(), binder, null);
return jaxbElement.getValue();
}
private void walkDom(String pfx, Element element, Binder<Node> binder, Object parent) {
try {
Object o = binder.getJAXBNode(element);
if (o instanceof JAXBElement) {
o = ((JAXBElement<?>)o).getValue();
}
//System.out.println(pfx + DOMUtils.getElementQName(element) + " -> "
// + (o == null ? "null" : o.getClass()));
if (o == null && parent != null) {
// if it's not able to bind to an object, it's possibly an xsd:any
// we'll check the parent for the standard "any" and replace with
// the original element.
Field f = parent.getClass().getDeclaredField("any");
if (f.getAnnotation(XmlAnyElement.class) != null) {
Object old = ReflectionUtil.setAccessible(f).get(parent);
if (old instanceof Element
&& DOMUtils.getElementQName(element).equals(DOMUtils.getElementQName((Element)old))) {
ReflectionUtil.setAccessible(f).set(parent, element);
}
}
}
if (o == null) {
return;
}
Node nd = element.getFirstChild();
while (nd != null) {
if (nd instanceof Element) {
walkDom(pfx + " ", (Element)nd, binder, o);
}
nd = nd.getNextSibling();
}
} catch (Throwable t) {
//ignore -this is a complete hack anyway
}
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}
@Override
public Binder<Node> createBinder() {
return new BinderImpl<Node>(this,new DOMScanner());
}