|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.xml.bind.helpers.AbstractUnmarshallerImpl
public abstract class AbstractUnmarshallerImpl
部分預設 Unmarshaller 實作。
此類別提供 Unmarshaller
介面的部分預設實作。
JAXB 提供者必須實作 5 個方法:getUnmarshallerHandler、unmarshal(Node)、unmarshal(XMLReader,InputSource)、unmarshal(XMLStreamReader) 和 unmarshal(XMLEventReader)。
Unmarshaller
巢狀類別摘要 |
---|
從介面 javax.xml.bind.Unmarshaller 繼承的巢狀類別/介面 |
---|
Unmarshaller.Listener |
欄位摘要 | |
---|---|
protected boolean |
validating
指示 Unmarshaller 是否將執行驗證。 |
建構子摘要 | |
---|---|
AbstractUnmarshallerImpl()
|
方法摘要 | ||
---|---|---|
protected UnmarshalException |
createUnmarshalException(SAXException e)
從 SAXException 創建 UnmarshalException。 |
|
|
getAdapter(Class<A> type)
獲取與指定型別關聯的適配器。 |
|
AttachmentUnmarshaller |
getAttachmentUnmarshaller()
|
|
ValidationEventHandler |
getEventHandler()
返回當前的事件處理程序,如果沒有設置該處理程序,則返回預設的事件處理程序。 |
|
Unmarshaller.Listener |
getListener()
返回向此 Unmarshaller 註冊的 Unmarshaller.Listener 。 |
|
Object |
getProperty(String name)
由於沒有必需的屬性,getProperty 方法的預設實作總是拋出 PropertyException。 |
|
Schema |
getSchema()
獲取用於執行解組時驗證的 JAXP 1.3 Schema 物件。 |
|
protected XMLReader |
getXMLReader()
獲取配置好的 XMLReader。 |
|
boolean |
isValidating()
指示 Unmarshaller 是否被配置為在執行解組操作期間進行驗證。 |
|
|
setAdapter(Class<A> type,
A adapter)
將已配置的 XmlAdapter 實例與此 unmarshaller 關聯。 |
|
void |
setAdapter(XmlAdapter adapter)
將已配置的 XmlAdapter 實例與此 unmarshaller 關聯。 |
|
void |
setAttachmentUnmarshaller(AttachmentUnmarshaller au)
將解析 cid(內容 id URI)的上下文與作為附件傳遞的二進制資料關聯。 |
|
void |
setEventHandler(ValidationEventHandler handler)
允許應用程序註冊一個驗證事件處理程序。 |
|
void |
setListener(Unmarshaller.Listener listener)
向此 Unmarshaller 註冊解組事件回調 Unmarshaller.Listener 。 |
|
void |
setProperty(String name,
Object value)
由於沒有必需的屬性,setProperty 方法的預設實作總是拋出 PropertyException。 |
|
void |
setSchema(Schema schema)
指定應用作驗證後續解組操作依據的 JAXP 1.3 Schema 物件。 |
|
void |
setValidating(boolean validating)
指定 Unmarshaller 是否應該在執行解組操作期間進行驗證。 |
|
Object |
unmarshal(File f)
從指定的檔案解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(InputSource source)
從指定的 SAX InputSource 解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(InputStream is)
從指定的 InputStream 解組 XML 資料並返回得到的內容階層樹。 |
|
|
unmarshal(Node node,
Class<T> expectedType)
通過 JAXB 映射的 declaredType 解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(Reader reader)
從指定的 Reader 解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(Source source)
從指定的 XML Source 解組 XML 資料並返回得到的內容階層樹。 |
|
|
unmarshal(Source source,
Class<T> expectedType)
從 declaredType 指定的 XML Source 解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(URL url)
從指定的 URL 解組 XML 資料並返回得到的內容階層樹。 |
|
Object |
unmarshal(XMLEventReader reader)
從指定的 pull 解析器解組 XML 資料並返回得到的內容階層樹。 |
|
|
unmarshal(XMLEventReader reader,
Class<T> expectedType)
將根元素解組到 JAXB 映射的 declaredType 並返回得到的內容階層樹。 |
|
protected abstract Object |
unmarshal(XMLReader reader,
InputSource source)
使用指定的 XMLReader 和 InputSource 解組物件。 |
|
Object |
unmarshal(XMLStreamReader reader)
從指定的 pull 解析器解組 XML 資料並返回得到的內容階層樹。 |
|
|
unmarshal(XMLStreamReader reader,
Class<T> expectedType)
將根元素解組到 JAXB 映射的 declaredType 並返回得到的內容階層樹。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
從介面 javax.xml.bind.Unmarshaller 繼承的方法 |
---|
getUnmarshallerHandler, unmarshal |
欄位詳細資訊 |
---|
protected boolean validating
建構子詳細資訊 |
---|
public AbstractUnmarshallerImpl()
方法詳細資訊 |
---|
protected XMLReader getXMLReader() throws JAXBException
SAXSource
物件沒有 XMLReader 時使用。
Unmarshaller
不可重入,因此我們只能使用一個 XMLReader 實例。
JAXBException
public Object unmarshal(Source source) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
客戶端應用程序可以選擇不使用隨 JAXB 提供者一起提供的預設解析器機制。任何相容 SAX 2.0 的解析器都可以取代 JAXB 提供者的預設機制。要實作這一點,客戶端應用程序必須正確配置一個套件含 XMLReader 的 SAXSource,並且該 XMLReader 是由 SAX 2.0 解析器提供者實作的。如果 XMLReader 有一個向它註冊的 org.xml.sax.ErrorHandler,則將使用 JAXB 提供者替換它,以便通過 JAXB 的 ValidationEventHandler 機制報告驗證錯誤。如果 SAXSource 不包含 XMLReader,則將使用 JAXB 提供者的預設解析器機制。
也可以使用此解析器替換機制來替換 JAXB 提供者的解組時驗證引擎。客戶端應用程序必須正確配置其相容 SAX 2.0 的解析器來執行驗證(如上例所示)。解析器在解組操作期間遇到的任何 SAXParserExceptions 都將由 JAXB 提供者處理,並將其轉換為 JAXB ValidationEvent 物件,這些物件將通過已經向 Unmarshaller 註冊的 ValidationEventHandler 報告給客戶端。註: 在為了實作解組而指定一個替換驗證 SAX 2.0 解析器時,無需替換 JAXB 提供者使用的驗證引擎來執行按需應變的驗證。
客戶端應用程序指定將在解組期間使用的替換解析器機制的唯一方法是通過 unmarshal(SAXSource) API。所有其他形式的 unmarshal 方法(檔案、URL、Node 等等)將使用 JAXB 提供者的預設解析器和驗證器機制。
Unmarshaller
中的 unmarshal
source
- 將從中解組 XML 資料的 XML Source(提供者只需支持 SAXSource、DOMSource 和 StreamSource)
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料Unmarshaller.unmarshal(javax.xml.transform.Source, Class)
protected abstract Object unmarshal(XMLReader reader, InputSource source) throws JAXBException
JAXBException
public final Object unmarshal(InputSource source) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
Unmarshaller
中的 unmarshal
source
- 將從中解組 XML 資料的輸入源
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public final Object unmarshal(URL url) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
Unmarshaller
中的 unmarshal
url
- 將從中解組 XML 資料的 URL
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public final Object unmarshal(File f) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
Unmarshaller
中的 unmarshal
f
- 將從中解組 XML 資料的檔案
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或著 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public final Object unmarshal(InputStream is) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
Unmarshaller
中的 unmarshal
is
- 將從中解組 XML 資料的 InputStream
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public final Object unmarshal(Reader reader) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
Unmarshaller
中的 unmarshal
reader
- 將從中解組 XML 資料的 Reader
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public boolean isValidating() throws JAXBException
註: 為了與 JAXP 保持一致,我將該方法命名為 isValidating(),而不是 getValidating()。
Unmarshaller
中的 isValidating
JAXBException
- 如果檢索驗證標誌時發生錯誤public void setEventHandler(ValidationEventHandler handler) throws JAXBException
如果在調用任一 unmarshal 方法期間發生驗證錯誤,則 JAXB 提供者將調用驗證事件處理程序。如果在調用解組方法之前客戶端應用程序沒有註冊驗證事件處理程序,那麼將忽略所有驗證事件,並有可能導致不可預料的行為。
Unmarshaller
中的 setEventHandler
handler
- 驗證事件處理程序
JAXBException
- 如果在設置事件處理程序時發生錯誤public void setValidating(boolean validating) throws JAXBException
此方法僅在調用某一解組方法之前或之後調用。
Unmarshaller
中的 setValidating
validating
- 如果 Unmarshaller 應該在執行解組操作期間進行驗證,則該參數為 true,否則為 false
JAXBException
- 如果在執行解組操作期間啟用或禁用驗證時發生錯誤public ValidationEventHandler getEventHandler() throws JAXBException
Unmarshaller
中的 getEventHandler
JAXBException
- 如果獲取當前事件處理程序時發生錯誤protected UnmarshalException createUnmarshalException(SAXException e)
當提供者實作的 ContentHandler 希望拋出 JAXBException 時,它需要通過 SAXException 套件裝該異常。如果 unmarshaller 實作盲目地使用 JAXBException 套件裝 SAXException ,則異常將是用另一個 JAXBException 套件裝的 SAXException 套件裝的 JAXBException。這樣做很不明智。
此方法檢查 SAXException 的巢狀異常並可減少過多的套件裝。
public void setProperty(String name, Object value) throws PropertyException
Unmarshaller
中的 setProperty
name
- 要設置的屬性的名稱。此值可以使用一個常數欄位來指定,也可以是一個使用者提供的字元串。value
- 要設置的屬性值
PropertyException
- 如果處理給定屬性或值時發生錯誤public Object getProperty(String name) throws PropertyException
Unmarshaller
中的 getProperty
name
- 要檢索的屬性的名稱
PropertyException
- 如果檢索給定屬性或值屬性名稱時發生錯誤public Object unmarshal(XMLEventReader reader) throws JAXBException
Unmarshaller
複製的描述此方法是一個解組全體根方法。
此方法假定該解析器處於 START_DOCUMENT 或 START_ELEMENT 事件上。解組將從起始事件開始,到相應的終止事件結束。如果此方法成功返回,則 reader 將指向終止事件後面的標記。
Unmarshaller
中的 unmarshal
reader
- 要讀取的解析器。
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料Unmarshaller.unmarshal(javax.xml.stream.XMLEventReader, Class)
public Object unmarshal(XMLStreamReader reader) throws JAXBException
Unmarshaller
複製的描述實作解組全體根元素。
此方法假定該解析器處於 START_DOCUMENT 或 START_ELEMENT 事件上。解組將從起始事件開始,到相應的終止事件結束。如果此方法成功返回,則 reader 將指向終止事件後面的標記。
Unmarshaller
中的 unmarshal
reader
- 要讀取的解析器。
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料Unmarshaller.unmarshal(javax.xml.stream.XMLStreamReader, Class)
public <T> JAXBElement<T> unmarshal(Node node, Class<T> expectedType) throws JAXBException
Unmarshaller
複製的描述實作借助宣告的型別進行解組。
Unmarshaller
中的 unmarshal
node
- 從中解組 XML 資料的文檔/元素。調用者至少必須支持 Document 和 Element。expectedType
- 用來保存 node 的 XML 資料的適當 JAXB 映射類別。
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public <T> JAXBElement<T> unmarshal(Source source, Class<T> expectedType) throws JAXBException
Unmarshaller
複製的描述實作借助宣告的型別進行解組。
請參閱 SAX 2.0 解析器的可插入性
Unmarshaller
中的 unmarshal
source
- 將從中解組 XML 資料的 XML Source(提供者只需支持 SAXSource、DOMSource 和 StreamSource)expectedType
- 用來保存 source 的 xml 根元素的適當 JAXB 映射類別
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public <T> JAXBElement<T> unmarshal(XMLStreamReader reader, Class<T> expectedType) throws JAXBException
Unmarshaller
複製的描述此方法實作借助 declaredType 進行解組。
此方法假定該解析器處於 START_DOCUMENT 或 START_ELEMENT 事件上。解組將從起始事件開始,到相應的終止事件結束。如果此方法成功返回,則 reader 將指向終止事件後面的標記。
Unmarshaller
中的 unmarshal
reader
- 要讀取的解析器。expectedType
- 用來保存 reader 的 START_ELEMENT XML 資料的適當 JAXB 映射類別。
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public <T> JAXBElement<T> unmarshal(XMLEventReader reader, Class<T> expectedType) throws JAXBException
Unmarshaller
複製的描述此方法實作借助 declaredType 進行解組。
此方法假定該解析器處於 START_DOCUMENT 或 START_ELEMENT 事件上。解組將從起始事件開始,到相應的終止事件結束。如果此方法成功返回,則 reader 將指向終止事件後面的標記。
Unmarshaller
中的 unmarshal
reader
- 要讀取的解析器。expectedType
- 用來保存 reader 的 START_ELEMENT XML 資料的適當 JAXB 映射類別。
JAXBException
- 如果在解組時發生不可預料的錯誤
UnmarshalException
- 如果 ValidationEventHandler
從其 handleEvent 方法返回 false 或者 Unmarshaller 不能執行 XML 到 Java 的綁定。請參閱解組 XML 資料public void setSchema(Schema schema)
Unmarshaller
複製的描述Schema
物件。向此方法傳遞 null 將禁用驗證。
此方法將替換已過時的 setValidating(boolean)
API。
最初,此屬性被設置為 null。
Unmarshaller
中的 setSchema
schema
- 作為驗證解組操作依據的 Schema 物件;為 null 表示禁用驗證public Schema getSchema()
Unmarshaller
複製的描述Schema
物件。如果沒有在 unmarshaller 上設置 Schema,則此方法將返回 null,指示不會執行解組時驗證。
此方法用於替換已過時的 Unmarshaller.isValidating()
API,並可存取 Schema 物件。要確定 Unmarshaller 是否啟用了驗證,只需測試返回型別是否為 null:
boolean isValidating = u.getSchema()!=null;
Unmarshaller
中的 getSchema
public void setAdapter(XmlAdapter adapter)
Unmarshaller
複製的描述XmlAdapter
實例與此 unmarshaller 關聯。
這是調用 setAdapter(adapter.getClass(),adapter);
的一個便捷方法。
Unmarshaller
中的 setAdapter
Unmarshaller.setAdapter(Class,XmlAdapter)
public <A extends XmlAdapter> void setAdapter(Class<A> type, A adapter)
Unmarshaller
複製的描述XmlAdapter
實例與此 unmarshaller 關聯。
每個 unmarshaller 都可以在內部維護一個 Map
<Class
,XmlAdapter
>,可用來解組使用 XmlJavaTypeAdapter
註釋其欄位/方法的類別。
此方法允許應用程序使用已配置好的 XmlAdapter
實例。如果沒有給出適配器實例,則 unmarshaller 將調用其預設建構子創建一個實例。
Unmarshaller
中的 setAdapter
type
- 適配器的型別。當 XmlJavaTypeAdapter.value()
參考此型別時,將使用指定的實例。adapter
- 將要使用的適配器實例。如果為 null,則將註銷此型別的當前適配器集合。public <A extends XmlAdapter> A getAdapter(Class<A> type)
Unmarshaller
複製的描述Unmarshaller.setAdapter(javax.xml.bind.annotation.adapters.XmlAdapter)
方法的反向操作。
Unmarshaller
中的 getAdapter
public void setAttachmentUnmarshaller(AttachmentUnmarshaller au)
Unmarshaller
複製的描述將解析 cid(內容 id URI)的上下文與作為附件傳遞的二進制資料關聯。
通過 Unmarshaller.setSchema(Schema)
啟用的解組時驗證,即使在 unmarshaller 執行 XOP 處理時也必須支持。
Unmarshaller
中的 setAttachmentUnmarshaller
public AttachmentUnmarshaller getAttachmentUnmarshaller()
Unmarshaller
中的 getAttachmentUnmarshaller
public void setListener(Unmarshaller.Listener listener)
Unmarshaller
複製的描述
向此 Unmarshaller
註冊解組事件回調 Unmarshaller.Listener
。
每個 Unmarshaller 只有一個 Listener。設置 Listener 將替換以前設置的 Listener。通過將 listener 設置為 null 可註銷當前的 Listener。
Unmarshaller
中的 setListener
listener
- 為此 Unmarshaller
提供解組事件回調public Unmarshaller.Listener getListener()
Unmarshaller
複製的描述返回向此 Unmarshaller
註冊的 Unmarshaller.Listener
。
Unmarshaller
中的 getListener
Unmarshaller.Listener
;如果未向此 Unmarshaller 註冊任何 Listener,則返回 null
。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。