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 Level 3 Core] , Приложение Б. [DOM Level 2 Core] разрешает пустые строки в качестве реального URI пространства имен. namespaceURI
Если свойство объекта является пустой Node
строкой, сериализация будет обрабатывать их как null
, игнорируя префикс , если он имеется.
LSSerializer
принимает любой тип узла для сериализации. Для узлов с типом Document
или Entity
по возможности будет создан xml с правильным форматом (правильность формата гарантируется, если документ или сущность поступают в результате операции синтаксического анализа и не изменяются с момента создания). Сериализованные выходные данные для этих типов узлов являются xml-документом или внешней сущностью XML соответственно и являются допустимыми входными данными для средства синтаксического анализа XML. Для всех остальных типов узлов сериализованная форма зависит от реализации.
В сериализуемом объекте или Entity
обрабатываются следующим образом<, как записываются узлы ul<>liDocument
>, включая xml-объявление (если параметру xml-declaration не присвоено значение false
) и подмножество DTD, если оно существует в модели DOM.Document
DocumentFragment
Nodes
При написании Document
узла выполняется сериализация всего документа. </li><li nodes>Entity
при записи напрямую с помощью LSSerializer.write
выводит расширение сущности, но исправление пространства имен не выполняется. Полученные выходные данные будут допустимы в качестве внешней сущности. </li><li Если> параметр " entities" имеет значение true
, EntityReference
узлы сериализуются как ссылка на сущности в виде " &entityName;
" в выходных данных. Дочерние узлы (расширение) ссылки на сущность игнорируются. Если параметр " сущности" имеет значение false
, сериализуются только дочерние элементы ссылки на сущность. EntityReference
Узлы без дочерних узлов (нет соответствующего Entity
узла или у соответствующих Entity
узлов нет дочерних узлов) всегда сериализуются. </li><li li,>CDATAsections
содержащие символы содержимого, которые не могут быть представлены в указанной кодировке выходных данных, обрабатываются в соответствии с параметром " split-cdata-sections". Если для параметра задано значение true
, CDATAsections
разделяются, а непредставимые символы сериализуются как ссылки на числовые символы в обычном содержимом. Точное положение и количество разделений не указано. Если параметр имеет значение false
, непредставимые символы в CDATAsection
отображаются как "wf-invalid-character"
ошибки, если параметру " правильный формат" присвоено значение true
. Ошибка не может быть восстановлена— отсутствует механизм для предоставления альтернативных символов и продолжения сериализации. <Узлы /li><li>DocumentFragment
сериализуются путем сериализации дочерних элементов фрагмента документа в порядке их отображения во фрагменте документа. </li><li> . Все остальные типы узлов (Element, Text и т. д.) сериализуются в соответствующую форму источника XML. </li></ul<>p ><b>Примечание.</b> Сериализация Node
не всегда создает XML-документ правильного формата, т. е. LSParser
может вызвать неустранимые ошибки при анализе результирующей сериализации.
В символьных данных документа (за пределами разметки) все символы, которые не могут быть представлены напрямую, заменяются ссылками на символы. Вхождения "<" и "&" заменяются предопределенными сущностями & Lt; и &усилие; Amp;. Другие предопределенные сущности (& gt;, &усилие; apos;, и &усилие; quot;) может не использоваться, за исключением случаев, когда это необходимо (например, с помощью & Gt; в таких случаях, как ']]>'). Все символы, которые не могут быть представлены непосредственно в кодировке выходных символов, сериализуются как ссылки на числовые символы (и поскольку стандарты кодировки символов обычно используют шестнадцатеричные представления символов, при сериализации ссылок на символы рекомендуется использовать шестнадцатеричное представление).
Чтобы значения атрибутов содержали как одиночные, так и двойные кавычки, апостроф или одинарные кавычки (') можно представить как "& apos;", и символ в двойных кавычках (") в виде "& quot;". Новые символы строки и другие символы, которые не могут быть представлены непосредственно в значениях атрибутов в кодировке выходных символов, сериализуются как ссылка на числовой символ.
В разметке, но за пределами атрибутов любое вхождение символа, которое не может быть представлено в кодировке выходных символов, сообщается как DOMError
неустранимая ошибка. Примером может быть сериализация элемента < LaCa\u00f1ada/> с encoding="us-ascii"
. Это приведет к созданию DOMError
"wf-invalid-character-in-node-name" (как предлагается в разделе " well-formed").
При запросе, задав для параметра " normalize-characters" значение LSSerializer
true, нормализация символов выполняется в соответствии с определением полностью нормализованных символов, включенным в приложение E к [XML 1.1] для всех сериализуемых данных, как разметки, так и символьных данных. Процесс нормализации символов влияет только на данные по мере их записи; он не изменяет представление документа модели DOM после завершения сериализации.
Реализации требуются для поддержки кодировок UTF-8, UTF-16, UTF-16BE и UTF-16LE, чтобы гарантировать сериализацию данных во всех кодировках, которые должны поддерживаться всеми средствами синтаксического анализа XML. Если кодировка имеет кодировку UTF-8, зависит ли сериализация метки порядка байтов или выходные данные с большим или маленьким эндианом, зависит от реализации. Если кодировка имеет кодировку UTF-16, независимо от того, является ли вывод большим или маленьким эндианом, зависит от реализации, но для выходных данных, не являющихся символами, таких как LSOutput.byteStream
или LSOutput.systemId
, должна быть создана метка порядка байтов. Если метка порядка байтов не создана, отображается предупреждение "байт-порядок-метка-требуется". Если используется кодировка UTF-16LE или UTF-16BE, выходные данные являются большими (UTF-16BE) или малоиндскими (UTF-16LE), и метка порядка байтов не создается. Во всех случаях объявление кодировки, если оно создано, будет соответствовать кодировке, используемой во время сериализации (например encoding="UTF-16"
, будет отображаться при запросе UTF-16).
Пространства имен фиксируются во время сериализации. Процесс сериализации проверяет согласованность объявлений пространств имен, префиксов пространств имен и универсального кода ресурса (URI) пространства имен, связанного с элементами и атрибутами. При обнаружении несоответствий сериализованная форма документа будет изменена, чтобы удалить их. Метод, используемый для исправления пространства имен при сериализации документа, — это алгоритм, определенный в приложении B.1 "Нормализация пространства имен" [DOM Уровня 3 Ядра] .
При сериализации документа параметр "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> вызывается, если параметр конфигурации " пространства имен" имеет значение true
, а сущность, замещающий текст которой содержит несвязанные префиксы пространства имен, ссылается в расположении, где отсутствуют привязки для префиксов пространства имен. </dd><dt>"unsupported-encoding" [fatal]
</dt><dd> вызывается при обнаружении неподдерживаемой кодировки. </dd></dl>
В дополнение к возникновению определенных ошибок и предупреждений реализация, как ожидается, вызовет ошибки конкретной реализации и предупреждения для любых других ошибок и предупреждений, таких как ошибки ввода-вывода (файл не найден, отказано в разрешении,...) и т. д.
См. также спецификацию загрузки и сохранения модели DOM 3.
Документация по Java для org.w3c.dom.ls.LSSerializer
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.
Свойства
DomConfig |
Предоставляет |
Handle |
Возвращает значение JNI базового объекта Android. (Унаследовано от 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) |
Предоставляет |