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 Level 3 Core] 中的定义完成,附录 B.[DOM Level 2 Core] 允许空字符串作为实际命名空间 URI。 namespaceURI
如果 的 Node
为空字符串,则序列化会将它们视为 null
,并忽略前缀(如果有)。
LSSerializer
接受任何节点类型进行序列化。 对于 类型 Document
为 或 Entity
的节点,将尽可能创建格式正确的 XML (如果文档或实体来自分析操作且自创建) 以来未更改,则保证格式正确的 XML。 这些节点类型的序列化输出分别作为 XML 文档或外部 XML 实体,是 XML 分析程序的可接受输入。 对于所有其他类型的节点,序列化形式依赖于实现。
Document
在 、 DocumentFragment
或 Entity
进行序列化时,Nodes
将按如下<方式处理 ul><li>Document
节点,包括 XML 声明 (除非参数“xml-declaration”设置为 false
) 和 DTD 子集(如果 DOM 中存在)。 Document
编写节点可序列化整个文档。 </li><li>Entity
nodes,当直接写入 LSSerializer.write
时,输出实体扩展,但不执行命名空间修复。 生成的输出将作为外部实体有效。 </li><li> 如果参数“ entities”设置为 true
, EntityReference
则节点在输出中序列化为“”形式的 &entityName;
实体引用。 将忽略实体引用的扩展) (子节点。 如果参数“ entities”设置为 false
,则仅序列化实体引用的子级。 EntityReference
没有子级的节点 (没有相应的 Entity
节点或相应的 Entity
节点没有子级) 始终序列化。 <包含无法在指定输出编码中表示的内容字符的 /li><li>CDATAsections
根据“ split-cdata-sections”参数进行处理。 如果 参数设置为 true
, CDATAsections
则拆分,并且不可表示的字符在普通内容中序列化为数字字符引用。 未指定拆分的确切位置和数量。 如果 参数设置为 false
,如果 参数“格式正确的”设置为 true
,则会将 中CDATAsection
不可表示的字符报告为"wf-invalid-character"
错误。 此错误不可恢复 - 没有提供替代字符并继续序列化的机制。 </li><li>DocumentFragment
节点通过序列化文档片段的子级以文档片段中的出现顺序进行序列化。 </li><li> (元素、文本等 ) 的所有其他节点类型都序列化为相应的 XML 源形式。 </li></ul><p ><b>注意:</b> 的序列化 Node
并不总是生成格式正确的 XML 文档,即 在分析生成的序列化时, LSParser
可能会引发严重错误。
在标记) 外部 (文档的字符数据中,任何无法直接表示的字符都将替换为字符引用。 “<”和“&”的匹配项被预定义的实体 <和 &;放大 器;。 其他预定义实体 (>、&和apos;, 和 ") 可能不会使用,除非需要 (例如使用 &燃气轮机;在“]]>”等情况下) 。 任何不能直接在输出字符编码中表示的字符都会序列化为数字字符引用 (并且由于字符编码标准通常使用字符的十六进制表示形式,因此建议在) 序列化字符引用时使用十六进制表示形式。
为了允许属性值同时包含单引号和双引号,撇号或单引号字符 (') 可以表示为“&和;apos;“,双引号字符 (”) 为“"“. 无法直接在输出字符编码中的属性值中表示的新行字符和其他字符将序列化为数字字符引用。
在标记中,但在属性之外,任何在输出字符编码中无法表示的字符出现都会报告为 DOMError
致命错误。 例如,将元素序列化为 <LaCa\u00f1ada/>与 。encoding="us-ascii"
这将导致生成一个 DOMError
“wf-invalid-character-in-node-name” (,如“ 格式良好”) 中建议的那样。
通过将参数“normalize-characters”LSSerializer
设置为 true 来请求字符规范化时,将根据 [XML 1.1] 附录 E 中包含的完全规范化字符的定义对要序列化的所有数据(标记和字符数据)执行字符规范化。 字符规范化过程仅影响正在写入的数据;它不会在序列化完成后更改 DOM 的文档视图。
实现需要支持编码“UTF-8”、“UTF-16”、“UTF-16BE”和“UTF-16LE”,以确保数据在所有 XML 分析程序需要支持的所有编码中可序列化。 当编码为 UTF-8 时,是否序列化字节顺序标记,或者输出是 big-endian 还是 little-endian,都依赖于实现。 当编码为 UTF-16 时,输出是否为 big-endian 还是 little-endian 取决于实现,但必须为非字符输出(如 LSOutput.byteStream
或 LSOutput.systemId
)生成字节顺序标记。 如果未生成字节顺序标记,则会报告“需要字节顺序标记”警告。 当编码为 UTF-16LE 或 UTF-16BE 时,输出为 big-endian (UTF-16BE) 或 little-endian (UTF-16LE) 且不会生成字节顺序标记。 在所有情况下,编码声明(如果生成)将对应于序列化期间使用的编码 (例如 encoding="UTF-16"
,如果) 请求 UTF-16,将显示。
命名空间在序列化过程中被修复,序列化过程将验证命名空间声明、命名空间前缀以及与元素和属性关联的命名空间 URI 是否一致。 如果发现不一致,将更改文档的序列化格式以将其删除。 在序列化文档时用于执行命名空间修复的方法是在 [DOM Level 3 Core] 的附录 B.1“命名空间规范化”中定义的算法。
序列化文档时,参数“discard-default-content”控制是否序列化非指定数据。
序列化时,错误和警告通过错误处理程序 (LSSerializer.domConfig
的“ error-handler”参数) 报告给应用程序。 此规范绝不会尝试定义序列化 DOM 节点时可能发生的所有可能错误和警告,但定义了一些常见的错误和警告情况。 此规范定义的错误和警告) ( DOMError.type
类型为:<<>dl dt"no-output-specified" [fatal]
<>/dt><dd> 在 写入 LSOutput
时引发(如果在 中LSOutput
未指定输出)。 </dd><dt>"unbound-prefix-in-entity-reference" [fatal]
</dt<>dd> 如果配置参数“namespaces”设置为 true
,且在命名空间前缀没有绑定的位置引用替换文本包含未绑定命名空间前缀的实体,则引发 。 </dd><dt><"unsupported-encoding" [fatal]
/dt><dd> 如果遇到不受支持的编码,则引发。 </dd></dl>
除了引发定义的错误和警告外,实现还应该针对任何其他错误和警告情况(例如,找不到 IO 错误 (文件、权限被拒绝,...) 等)引发特定于实现的错误和警告。
另请参阅 文档对象模型 (DOM) 级别 3 加载和保存规范。
的 org.w3c.dom.ls.LSSerializer
Java 文档。
此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。
属性
DomConfig |
|
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
JniIdentityHashCode |
返回包装实例的 的值 |
JniManagedPeerState |
托管对等方的状态。 (继承自 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) |
|