ILSSerializer 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
LSSerializer
提供 API,可將 (將 DOM 檔寫入 XML) 串行化。
[Android.Runtime.Register("org/w3c/dom/ls/LSSerializer", "", "Org.W3c.Dom.LS.ILSSerializerInvoker")]
public interface ILSSerializer : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("org/w3c/dom/ls/LSSerializer", "", "Org.W3c.Dom.LS.ILSSerializerInvoker")>]
type ILSSerializer = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 屬性
- 實作
備註
LSSerializer
提供 API,可將 (將 DOM 檔寫入 XML) 串行化。 XML 資料會寫入字串或輸出資料流。 在串行化期間所做的任何變更或修正只會影響串行化的數據。 串行 Document
化作業永遠不會改變物件及其子系。
在 XML 數據串行化期間,命名空間修正會如 [DOM 層級 3 核心] 中所定義完成,附錄 B.[DOM Level 2 Core] 允許空字串作為實際的命名空間 URI。 namespaceURI
如果 的 Node
是空字串,則串行化會將它們null
視為 ,並忽略任何前置詞。
LSSerializer
接受任何節點類型以進行串行化。 如果是 或 Entity
類型的Document
節點,如果檔或實體來自剖析作業,而且自建立) 之後,就會盡可能建立格式正確的 XML, (格式良好。 這些節點類型的串行化輸出分別做為 XML 檔或外部 XML 實體,而且是 XML 剖析器的可接受輸入。 針對所有其他類型的節點,串行化窗體會相依於實作。
在、 或 串行化中,Nodes
會依照下列<方式處理 ul<>liDocument
> 節點,包括 XML 宣告 (,除非參數 「xml-declaration」 設定為 false
) 和 DTD 子集存在 DOM 中。Entity
DocumentFragment
Document
Document
寫入節點會串行化整個檔。 </li li>>Entity
< 節點是由 直接LSSerializer.write
寫入時,會輸出實體擴充,但未完成命名空間修正。 產生的輸出將會以外部實體的形式有效。 </li><li> 如果參數 “ entities” 設定為 true
, EntityReference
節點會在輸出中串行化為窗體 “ &entityName;
” 的實體參考。 忽略實體參考) 展開 (子節點。 如果參數 「 entities」 設定為 false
,則只會串行化實體參考的子系。 EntityReference
沒有子系的節點 (沒有對應的 Entity
節點,或對應的 Entity
節點沒有子系) 一律會串行化。 </li li>CDATAsections
>< 包含無法在指定輸出編碼中表示的內容字元,會根據 “split-cdata-sections” 參數來處理。 如果 參數設定 true
為 , CDATAsections
則會分割,而且無法辨識的字元會在一般內容中串行化為數值字元參考。 未指定確切的分割位置和數目。 如果 參數設定false
為 ,則 如果參數 「well-formed」 設定true
為 ,則會將 中的CDATAsection
不區分字元回報為"wf-invalid-character"
錯誤。 錯誤無法復原 - 沒有提供替代字元並繼續串行化的機制。 </li li><>DocumentFragment
節點會依照檔片段中顯示的順序串行化檔片段的子系來串行化。 </li li><> 所有其他節點類型 (元素、文字等 ) 都會串行化為其對應的 XML 來源表單。 </li></ul<>p ><b>注意:</b> 的Node
串行化不一定會產生格式正確的 XML 檔,亦即LSParser
剖析產生的串行化時,可能會擲回嚴重錯誤。
在標記) 以外的檔字元數據 (內,任何無法直接表示的字元都會取代為字元參考。 '<' 和 '&' 的出現次數會由預先定義的實體取代 <和 &放大器;。 其他預先定義的實體 (>、', 和 ") 可能無法使用,除非有需要 (,例如使用 &燃氣輪機;在 ']]>' 等情況下) 。 任何無法直接在輸出字元編碼中表示的字元都會串行化為數值字元參考 (,而且因為字元編碼標準通常會使用字元的十六進位表示法,因此建議您在串行化字元參考時使用十六進位表示法) 。
若要允許屬性值同時包含單引號和雙引號,單引號或單引號字元 (『) 可以表示為 」'“, 和雙引號字元 (”) 為 “"“. 輸出字元編碼中的屬性值中無法直接表示的新行字元和其他字元,都會串行化為數值字元參考。
在標記內,但在屬性之外,任何無法在輸出字元編碼中表示的字元,都會回報為 DOMError
嚴重錯誤。 範例會串行化專案 <LaCa\u00f1ada/>使用 encoding="us-ascii"
。 這會產生 DOMError
「wf-invalid-character-in-node-name」 (,如 “ well-formed”) 所建議。
藉由將參數 「normalize-characters」 LSSerializer
設定為 true 來要求時,會根據要串行化之所有數據上 [XML 1.1] 附錄 E 中包含的完整正規化字元定義,執行字元正規化。 字元正規化程式只會影響正在寫入的數據;在串行化完成後,它不會改變檔的 DOM 檢視。
實作需要支援編碼 「UTF-8」、“UTF-16”、“UTF-16BE” 和 “UTF-16LE” 編碼,以確保所有 XML 剖析器都必須支持的數據可串行化。 當編碼為UTF-8時,不論是串行化位元組順序標記,還是輸出是大端或小端,都是相依的。 當編碼方式為 UTF-16 時,不論輸出是否為大端或位元組尾相依,但必須針對非字元輸出產生 Byte Order Mark,例如 LSOutput.byteStream
或 LSOutput.systemId
。 如果未產生位元組順序標記,則會報告「需要位元節順序標記」警告。 當編碼方式為 UTF-16LE 或 UTF-16BE 時,輸出會是 big-endian (UTF-16BE) 或 small-endian (UTF-16LE) ,而且不會產生 Byte Order Mark。 在所有情況下,如果產生編碼宣告,則會對應至串行化期間所使用的編碼 (,例如 encoding="UTF-16"
,如果要求UTF-16) ,就會出現。
串行化期間會修正命名空間,串行化程式會確認命名空間宣告、命名空間前置詞和與元素和屬性相關聯的命名空間 URI 都一致。 如果找到不一致的情況,將會改變檔的串行化形式來移除它們。 串行化檔時用來執行命名空間修正的方法,是在 [DOM 層級 3 核心] 的附錄 B.1「命名空間正規化」中定義的演算法。
串行化檔時,參數 「discard-default-content」 會控制是否串行化非指定的數據。
串行化時,錯誤和警告會透過錯誤處理程式向應用程式回報, (LSSerializer.domConfig
的 “ error-handler” 參數) 。 此規格不會嘗試定義串行化 DOM 節點時可能發生的所有可能錯誤和警告,但定義了一些常見的錯誤和警告案例。 DOMError.type
() 這個規格所定義之錯誤和警告的類型為:<如果 未在 中LSOutput
指定任何輸出,則寫入 至 LSOutput
時引發的 dl<>dt/dt<>>"no-output-specified" [fatal]
< dd 。> </dd><dt/dt><<"unbound-prefix-in-entity-reference" [fatal]
> dd> 如果設定參數 “namespaces” 設定為 true
,而且在命名空間前置詞沒有系結系結的位置參考取代文字包含未系結命名空間前置詞的實體,則會引發 。 <如果遇到不支援的編碼,則引發 /dd><dt><"unsupported-encoding" [fatal]
/dt><dd 。> </dd></dl>
除了引發定義的錯誤和警告之外,實作還預期會引發任何其他錯誤和警告的實作特定錯誤和警告,例如找不到 IO 錯誤 (檔案、許可權遭拒,...) 等等。
另請參閱 檔物件模型 (DOM) 層級 3 載入和儲存規格。
的 org.w3c.dom.ls.LSSerializer
Java 檔。
此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
DomConfig |
|
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
JniIdentityHashCode |
傳回已包裝實例的 值 |
JniManagedPeerState |
Managed 對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
NewLine |
|
PeerReference |
傳 JniObjectReference 回已包裝 Java 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
設定所 |
SetJniManagedPeerState(JniManagedPeerStates) |
|
SetPeerReference(JniObjectReference) |
設定所 |
UnregisterFromRuntime() |
取消註冊這個實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
Write(INode, ILSOutput) |
如上所述串行化指定的節點,請參閱 介面的 |
WriteToString(INode) |
如上所述串行化指定的節點,請參閱 介面的 |
WriteToURI(INode, String) |
方便的方法,如同 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|
WriteAsync(ILSSerializer, INode, ILSOutput) |
|
WriteToURIAsync(ILSSerializer, INode, String) |
|