UnmarshallerHandler (Java EE 5)

Java EE API


javax.xml.bind Interface UnmarshallerHandler

All Superinterfaces:
ContentHandler

public interface UnmarshallerHandler
extends ContentHandler

Implements: org.xml.sax.ContentHandler

作为 SAX ContentHandler 实现的 Unmarshaller。

应用程序可以使用此接口将其 JAXB 提供者用作 XML 管线中的一个组件。例如:

JAXBContext context = JAXBContext.newInstance( "org.acme.foo" );

Unmarshaller unmarshaller = context.createUnmarshaller();
 
UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setNamespaceAware( true );
 
XMLReader xmlReader = spf.newSAXParser().getXMLReader();
xmlReader.setContentHandler( unmarshallerHandler );
xmlReader.parse(new InputSource( new FileInputStream( XML_FILE ) ) );

MyObject myObject= (MyObject)unmarshallerHandler.getResult();                          
 

此接口是可重用的:即使用户解组某一对象时失败,她/他仍可开始新一轮的解组。

英文文档:

Unmarshaller implemented as SAX ContentHandler.

Applications can use this interface to use their JAXB provider as a component in an XML pipeline. For example:

       JAXBContext context = JAXBContext.newInstance( "org.acme.foo" );

       Unmarshaller unmarshaller = context.createUnmarshaller();
 
       UnmarshallerHandler unmarshallerHandler = unmarshaller.getUnmarshallerHandler();

       SAXParserFactory spf = SAXParserFactory.newInstance();
       spf.setNamespaceAware( true );
 
       XMLReader xmlReader = spf.newSAXParser().getXMLReader();
       xmlReader.setContentHandler( unmarshallerHandler );
       xmlReader.parse(new InputSource( new FileInputStream( XML_FILE ) ) );

       MyObject myObject= (MyObject)unmarshallerHandler.getResult();                          
 

This interface is reusable: even if the user fails to unmarshal an object, s/he can still start a new round of unmarshalling.

Since:
JAXB1.0
Version:
$Revision: 1.2 $ $Date: 2006/03/08 16:55:17 $
Author:
  • Kohsuke KAWAGUCHI, Sun Microsystems, Inc.
See Also:
Unmarshaller.getUnmarshallerHandler()

Method Summary
 Object
 
Methods inherited from interface org.xml.sax.ContentHandler
 

Method Detail

public Object getResult() throws JAXBException, IllegalStateException
获得解组的结果。此方法只能在此处理程序接收 endDocument SAX 事件之后调用。
ThrowsIllegalStateException: 如果在此处理程序接收 endDocument 事件之前调用此方法。
ThrowsJAXBException: 如果出现任何解组错误。注意,允许该实现在解析错误期间抛出 SAXException。
return 总是返回被解组的非 null 有效对象。
英文文档:

getResult

Object getResult()
                 throws JAXBException,
                        IllegalStateException
Obtains the unmarshalled result. This method can be called only after this handler receives the endDocument SAX event.

Returns:
always return a non-null valid object which was unmarshalled.
Throws:
IllegalStateException - if this method is called before this handler receives the endDocument event.
JAXBException - if there is any unmarshalling error. Note that the implementation is allowed to throw SAXException during the parsing when it finds an error.


Submit a bug or feature

Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.

一看就知道只有菜鸟才干这么无知的事啦。

PS : 未经我党受权你也可自由散发此文档。 如有任何错误请自行修正;若因此而造成任何损失请直接找人民主席,请勿与本人联系。谢谢!