Share via


ILSSerializer 介面

定義

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 中。EntityDocumentFragmentDocument Document寫入節點會串行化整個檔。 </li li>>Entity< 節點是由 直接LSSerializer.write寫入時,會輸出實體擴充,但未完成命名空間修正。 產生的輸出將會以外部實體的形式有效。 </li><li> 如果參數 “ entities” 設定為 trueEntityReference 節點會在輸出中串行化為窗體 “ &amp;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剖析產生的串行化時,可能會擲回嚴重錯誤。

在標記) 以外的檔字元數據 (內,任何無法直接表示的字元都會取代為字元參考。 '<' 和 '&' 的出現次數會由預先定義的實體取代 &lt;和 &放大器;。 其他預先定義的實體 (&gt;、&apos;, 和 &quot;) 可能無法使用,除非有需要 (,例如使用 &燃氣輪機;在 ']]>' 等情況下) 。 任何無法直接在輸出字元編碼中表示的字元都會串行化為數值字元參考 (,而且因為字元編碼標準通常會使用字元的十六進位表示法,因此建議您在串行化字元參考時使用十六進位表示法) 。

若要允許屬性值同時包含單引號和雙引號,單引號或單引號字元 (『) 可以表示為 」&apos;“, 和雙引號字元 (”) 為 “&quot;“. 輸出字元編碼中的屬性值中無法直接表示的新行字元和其他字元,都會串行化為數值字元參考。

在標記內,但在屬性之外,任何無法在輸出字元編碼中表示的字元,都會回報為 DOMError 嚴重錯誤。 範例會串行化專案 <LaCa\u00f1ada/>使用 encoding="us-ascii"。 這會產生 DOMError 「wf-invalid-character-in-node-name」 (,如 “ well-formed”) 所建議。

藉由將參數 「normalize-charactersLSSerializer 設定為 true 來要求時,會根據要串行化之所有數據上 [XML 1.1] 附錄 E 中包含的完整正規化字元定義,執行字元正規化。 字元正規化程式只會影響正在寫入的數據;在串行化完成後,它不會改變檔的 DOM 檢視。

實作需要支援編碼 「UTF-8」、“UTF-16”、“UTF-16BE” 和 “UTF-16LE” 編碼,以確保所有 XML 剖析器都必須支持的數據可串行化。 當編碼為UTF-8時,不論是串行化位元組順序標記,還是輸出是大端或小端,都是相依的。 當編碼方式為 UTF-16 時,不論輸出是否為大端或位元組尾相依,但必須針對非字元輸出產生 Byte Order Mark,例如 LSOutput.byteStreamLSOutput.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.LSSerializerJava 檔。

此頁面的部分是根據 所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

屬性

DomConfig

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

傳回已包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

Managed 對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
NewLine

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊這個實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)
Write(INode, ILSOutput)

如上所述串行化指定的節點,請參閱 介面的 LSSerializer 一般描述。

WriteToString(INode)

如上所述串行化指定的節點,請參閱 介面的 LSSerializer 一般描述。

WriteToURI(INode, String)

方便的方法,如同LSSerializer.write使用未指定LSOutput.systemId編碼且設定為 自變數的 uriLSOutput 呼叫 。

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

GetJniTypeName(IJavaPeerable)

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

WriteAsync(ILSSerializer, INode, ILSOutput)

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

WriteToURIAsync(ILSSerializer, INode, String)

LSSerializer提供 API,可將 (將 DOM 檔寫入 XML) 串行化。

適用於