JavaTM 2 Platform
Standard Ed. 6

javax.xml.stream
介面 XMLStreamWriter


public interface XMLStreamWriter

XMLStreamWriter 介面指定如何編寫 XML。XMLStreamWriter 不在其輸入中檢查格式是否良好。但是,writeCharacters 方法需要轉義屬性值的 &、< 和 >。writeAttribute 方法將轉義上述字元以及 ",以確保所有字元內容和屬性值都是格式良好的。 必須單獨編寫每個 NAMESPACE 和 ATTRIBUTE。

XML Namespaces、javax.xml.stream.isRepairingNamespaces 和寫入方法行為
方法 isRepairingNamespaces == true isRepairingNamespaces == false
namespaceURI 綁定 namespaceURI 未綁定 namespaceURI 綁定 namespaceURI 未綁定
writeAttribute(namespaceURI, localName, value) prefix:localName="value" [1] xmlns:{generated}="namespaceURI" {generated}:localName="value" prefix:localName="value" [1] XMLStreamException
writeAttribute(prefix, namespaceURI, localName, value) 綁定到相同的前綴:
prefix:localName="value" [1]

綁定到不同的前綴:
xmlns:{generated}="namespaceURI" {generated}:localName="value"
xmlns:prefix="namespaceURI" prefix:localName="value" [3] 綁定到相同的前綴:
prefix:localName="value" [1][2]

綁定到不同的前綴:
XMLStreamException[2]
xmlns:prefix="namespaceURI" prefix:localName="value" [2][5]
writeStartElement(namespaceURI, localName)

writeEmptyElement(namespaceURI, localName)
<prefix:localName> [1] <{generated}:localName xmlns:{generated}="namespaceURI"> <prefix:localName> [1] XMLStreamException
writeStartElement(prefix, localName, namespaceURI)

writeEmptyElement(prefix, localName, namespaceURI)
綁定到相同的前綴:
<prefix:localName> [1]

綁定到不同的前綴:
<{generated}:localName xmlns:{generated}="namespaceURI">
<prefix:localName xmlns:prefix="namespaceURI"> [4] 綁定到相同的前綴:
<prefix:localName> [1]

綁定到不同的前綴:
XMLStreamException
<prefix:localName> 
註:
  • [1] 如果 namespaceURI == default Namespace URI,則不寫入任何前綴
  • [2] 如果 prefix == "" || null && namespaceURI == "",則不產生或寫入任何前綴或 Namespace 宣告
  • [3] 如果 prefix == "" || null,則隨機產生前綴
  • [4] 如果 prefix == "" || null,則將其視為預設 Namespace,且不產生或寫入任何前綴,如果 namespaceURI 是未綁定的,則產生並寫入一個 xmlns 宣告
  • [5] 如果 prefix == "" || null,則試圖定義預設 Namespace 將被視為無效,且將拋出 XMLStreamException

從以下版本開始:
1.6
另請參見:
XMLOutputFactory, XMLStreamReader

方法摘要
 void close()
          關閉此 writer 並釋放與 writer 關聯的所有資源。
 void flush()
          將所有快取記憶體資料寫入底層輸出機制。
 NamespaceContext getNamespaceContext()
          返回當前名稱空間上下文。
 String getPrefix(String uri)
          獲取綁定 URI 的前綴
 Object getProperty(String name)
          從底層實作獲取功能/屬性值
 void setDefaultNamespace(String uri)
          將 URI 綁定到預設名稱空間。
 void setNamespaceContext(NamespaceContext context)
          設置前綴和 URI 綁定的當前名稱空間上下文。
 void setPrefix(String prefix, String uri)
          設置綁定 URI 的前綴。
 void writeAttribute(String localName, String value)
          向輸出串流寫入一個不帶前綴的屬性。
 void writeAttribute(String namespaceURI, String localName, String value)
          向輸出串流寫入一個屬性
 void writeAttribute(String prefix, String namespaceURI, String localName, String value)
          向輸出串流寫入一個屬性
 void writeCData(String data)
          編寫 CData 節
 void writeCharacters(char[] text, int start, int len)
          向輸出寫入文本
 void writeCharacters(String text)
          向輸出寫入文本
 void writeComment(String data)
          編寫一個套件含資料的 XML 註釋
 void writeDefaultNamespace(String namespaceURI)
          向串流寫入預設名稱空間
 void writeDTD(String dtd)
          編寫 DTD 節。
 void writeEmptyElement(String localName)
          向輸出寫入一個空元素標記
 void writeEmptyElement(String namespaceURI, String localName)
          向輸出寫入一個空元素標記
 void writeEmptyElement(String prefix, String localName, String namespaceURI)
          向輸出寫入一個空元素標記
 void writeEndDocument()
          關閉所有開始標記並寫入相應的結束標記。
 void writeEndElement()
          向依賴於 writer 內部狀態的輸出寫入一個結束標記,以此確定事件的前綴和本地名稱。
 void writeEntityRef(String name)
          編寫一個實體參考
 void writeNamespace(String prefix, String namespaceURI)
          向輸出串流寫入一個名稱空間。
 void writeProcessingInstruction(String target)
          編寫一條處理指令
 void writeProcessingInstruction(String target, String data)
          編寫一條處理指令
 void writeStartDocument()
          編寫 XML 宣告。
 void writeStartDocument(String version)
          編寫 XML 宣告。
 void writeStartDocument(String encoding, String version)
          編寫 XML 宣告。
 void writeStartElement(String localName)
          向輸出寫入一個開始標記。
 void writeStartElement(String namespaceURI, String localName)
          向輸出寫入一個開始標記
 void writeStartElement(String prefix, String localName, String namespaceURI)
          向輸出寫入一個開始標記
 

方法詳細資訊

writeStartElement

void writeStartElement(String localName)
                       throws XMLStreamException
向輸出寫入一個開始標記。所有 writeStartElement 方法都在內部名稱空間上下文中打開一個新的作用域。編寫相應的 EndElement 導致作用域被關閉。

參數:
localName - 標記的本地名稱,不可以為 null
拋出:
XMLStreamException

writeStartElement

void writeStartElement(String namespaceURI,
                       String localName)
                       throws XMLStreamException
向輸出寫入一個開始標記

參數:
namespaceURI - 要使用的前綴的 namespaceURI ,不可以為 null
localName - 標記的本地名稱,不可以為 null
拋出:
XMLStreamException - 如果名稱空間 URI 未綁定到前綴並且 javax.xml.stream.isRepairingNamespaces 未設置為 true

writeStartElement

void writeStartElement(String prefix,
                       String localName,
                       String namespaceURI)
                       throws XMLStreamException
向輸出寫入一個開始標記

參數:
localName - 標記的本地名稱,不可以為 null
prefix - 標記的前綴,不可以為 null
namespaceURI - 要綁定前綴的 URI,不可以為 null
拋出:
XMLStreamException

writeEmptyElement

void writeEmptyElement(String namespaceURI,
                       String localName)
                       throws XMLStreamException
向輸出寫入一個空元素標記

參數:
namespaceURI - 要綁定標記的 URI,不可以為 null
localName - 標記的本地名稱,不可以為 null
拋出:
XMLStreamException - 如果名稱空間 URI 未綁定到前綴並且 javax.xml.stream.isRepairingNamespaces 未設置為 true

writeEmptyElement

void writeEmptyElement(String prefix,
                       String localName,
                       String namespaceURI)
                       throws XMLStreamException
向輸出寫入一個空元素標記

參數:
prefix - 標記的前綴,不可以為 null
localName - 標記的本地名稱,不可以為 null
namespaceURI - 要綁定標記的 URI,不可以為 null
拋出:
XMLStreamException

writeEmptyElement

void writeEmptyElement(String localName)
                       throws XMLStreamException
向輸出寫入一個空元素標記

參數:
localName - 標記的本地名稱,不可以為 null
拋出:
XMLStreamException

writeEndElement

void writeEndElement()
                     throws XMLStreamException
向依賴於 writer 內部狀態的輸出寫入一個結束標記,以此確定事件的前綴和本地名稱。

拋出:
XMLStreamException

writeEndDocument

void writeEndDocument()
                      throws XMLStreamException
關閉所有開始標記並寫入相應的結束標記。

拋出:
XMLStreamException

close

void close()
           throws XMLStreamException
關閉此 writer 並釋放與 writer 關聯的所有資源。此方法不得關閉底層輸出串流。

拋出:
XMLStreamException

flush

void flush()
           throws XMLStreamException
將所有快取記憶體資料寫入底層輸出機制。

拋出:
XMLStreamException

writeAttribute

void writeAttribute(String localName,
                    String value)
                    throws XMLStreamException
向輸出串流寫入一個不帶前綴的屬性。

參數:
localName - 屬性的本地名稱
value - 屬性的值
拋出:
IllegalStateException - 如果當前狀態不允許 Attribute 寫入
XMLStreamException

writeAttribute

void writeAttribute(String prefix,
                    String namespaceURI,
                    String localName,
                    String value)
                    throws XMLStreamException
向輸出串流寫入一個屬性

參數:
prefix - 此屬性的前綴
namespaceURI - 此屬性前綴的 URI
localName - 屬性的本地名稱
value - 屬性的值
拋出:
IllegalStateException - 如果當前狀態不允許 Attribute 寫入
XMLStreamException - 如果名稱空間 URI 未綁定到前綴且 javax.xml.stream.isRepairingNamespaces 未設置為 true

writeAttribute

void writeAttribute(String namespaceURI,
                    String localName,
                    String value)
                    throws XMLStreamException
向輸出串流寫入一個屬性

參數:
namespaceURI - 此屬性前綴的 URI
localName - 屬性的本地名稱
value - 屬性的值
拋出:
IllegalStateException - 如果當前狀態不允許 Attribute 寫入
XMLStreamException - 如果名稱空間 URI 未綁定到前綴且 javax.xml.stream.isRepairingNamespaces 未設置為 true

writeNamespace

void writeNamespace(String prefix,
                    String namespaceURI)
                    throws XMLStreamException
向輸出串流寫入一個名稱空間。如果此方法的 prefix 參數為空字元串、"xmlns" 或 null,則此方法將委託給 writeDefaultNamespace。

參數:
prefix - 要綁定名稱空間的前綴
namespaceURI - 要綁定前綴的 URI
拋出:
IllegalStateException - 如果當前狀態不允許 Namespace 寫入
XMLStreamException

writeDefaultNamespace

void writeDefaultNamespace(String namespaceURI)
                           throws XMLStreamException
向串流寫入預設名稱空間

參數:
namespaceURI - 要綁定預設名稱空間的 URI
拋出:
IllegalStateException - 如果當前狀態不允許 Namespace 寫入
XMLStreamException

writeComment

void writeComment(String data)
                  throws XMLStreamException
編寫一個套件含資料的 XML 註釋

參數:
data - 套件含在註釋中的資料,可以為 null
拋出:
XMLStreamException

writeProcessingInstruction

void writeProcessingInstruction(String target)
                                throws XMLStreamException
編寫一條處理指令

參數:
target - 處理指令的目標,不可以為 null
拋出:
XMLStreamException

writeProcessingInstruction

void writeProcessingInstruction(String target,
                                String data)
                                throws XMLStreamException
編寫一條處理指令

參數:
target - 處理指令的目標,不可以為 null
data - 處理指令中包含的資料,不可以為 null
拋出:
XMLStreamException

writeCData

void writeCData(String data)
                throws XMLStreamException
編寫 CData 節

參數:
data - CData 節中包含的資料,不可以為 null
拋出:
XMLStreamException

writeDTD

void writeDTD(String dtd)
              throws XMLStreamException
編寫 DTD 節。此字元串代表 XML 1.0 規範的整個 doctypedecl 產品。

參數:
dtd - 要編寫的 DTD
拋出:
XMLStreamException

writeEntityRef

void writeEntityRef(String name)
                    throws XMLStreamException
編寫一個實體參考

參數:
name - 實體的名稱
拋出:
XMLStreamException

writeStartDocument

void writeStartDocument()
                        throws XMLStreamException
編寫 XML 宣告。預設 XML 版本為 1.0,預設編碼為 utf-8

拋出:
XMLStreamException

writeStartDocument

void writeStartDocument(String version)
                        throws XMLStreamException
編寫 XML 宣告。預設 XML 版本為 1.0

參數:
version - xml 文檔的版本
拋出:
XMLStreamException

writeStartDocument

void writeStartDocument(String encoding,
                        String version)
                        throws XMLStreamException
編寫 XML 宣告。注意,編碼參數不能設置底層輸出的實際編碼。它必須在使用 XMLOutputFactory 創建 XMLStreamWriter 實例時進行設置

參數:
encoding - XML 宣告的編碼
version - XML 文檔的版本
拋出:
XMLStreamException - 如果給定編碼與底層串流的編碼不比對

writeCharacters

void writeCharacters(String text)
                     throws XMLStreamException
向輸出寫入文本

參數:
text - 要寫入的值
拋出:
XMLStreamException

writeCharacters

void writeCharacters(char[] text,
                     int start,
                     int len)
                     throws XMLStreamException
向輸出寫入文本

參數:
text - 要寫入的值
start - 陣列中的起始位置
len - 要寫入的字元數
拋出:
XMLStreamException

getPrefix

String getPrefix(String uri)
                 throws XMLStreamException
獲取綁定 URI 的前綴

返回:
前綴或 null
拋出:
XMLStreamException

setPrefix

void setPrefix(String prefix,
               String uri)
               throws XMLStreamException
設置綁定 URI 的前綴。前綴在當前 START_ELEMENT / END_ELEMENT 對的範圍內綁定。如果在寫入 START_ELEMENT 之前調用此方法,則前綴在根範圍內綁定。

參數:
prefix - 要綁定到 URI 的前綴,不可以為 null
uri - 要綁定到前綴的 URI,不可以為 null
拋出:
XMLStreamException

setDefaultNamespace

void setDefaultNamespace(String uri)
                         throws XMLStreamException
將 URI 綁定到預設名稱空間。此 URI 在當前 START_ELEMENT / END_ELEMENT 對的範圍內綁定。如果在寫入 START_ELEMENT 之前調用此方法,則 URI 在根範圍內綁定。

參數:
uri - 要綁定到預設名稱空間的 URI,不可以為 null
拋出:
XMLStreamException

setNamespaceContext

void setNamespaceContext(NamespaceContext context)
                         throws XMLStreamException
設置前綴和 URI 綁定的當前名稱空間上下文。此上下文成為用於寫入的根名稱空間上下文,並將替換當前的根名稱空間上下文。通過將傳遞到此方法的上下文用作解析名稱空間的根上下文,對 setPrefix 和 setDefaultNamespace 的後續調用將綁定名稱空間。此方法只能在文檔開始處調用一次。這不會導致名稱空間被宣告。如果在名稱空間上下文中存在前綴映射關係的名稱空間 URI,則它將被視為已經宣告,並且該前綴可以被 StreamWriter 使用。

參數:
context - 將用於此 writer 的名稱空間上下文,不可以為 null
拋出:
XMLStreamException

getNamespaceContext

NamespaceContext getNamespaceContext()
返回當前名稱空間上下文。

返回:
當前 NamespaceContext

getProperty

Object getProperty(String name)
                   throws IllegalArgumentException
從底層實作獲取功能/屬性值

參數:
name - 屬性的名稱,不可以為 null
返回:
屬性的值
拋出:
IllegalArgumentException - 如果屬性不受支持
NullPointerException - 如果名稱為 null

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only