Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface LSSerializer
LSSerializer
обеспечивает API для того, чтобы он сериализировал выписывание документа ДОМА в XML. Данные XML пишутся строке или потоку вывода. Любые изменения или fixups, сделанный во время сериализации, влияют только на сериализированные данные. Document
возразите и его дочерние элементы никогда не изменяются работой сериализации. Во время сериализации данных XML пространство имен fixup делается как определено в [namespaceURI
из a Node
пустая строка, сериализация обработает их как null
, игнорирование префикса, если любой.
LSSerializer
принимает любой тип узла для сериализации. Для узлов типа Document
или Entity
, правильно построенный XML будет создаваться, когда возможный (отмеченность гарантируется, если документ или объект прибудут из работы синтаксического анализа и будут неизменны, так как это создавалось). Сериализированный вывод для этих, которые вводит узел, или как XML-документ или как Внешний XML Объект, соответственно, и является приемлемым вводом для синтаксического анализатора XML. Для всех других типов узлов сериализированная форма является зависящей от реализации.
В пределах a Document
, DocumentFragment
, или Entity
быть сериализированным, Nodes
обрабатываются следующим образом
Document
узлы пишутся, включая объявление XML (если параметры "xml-объявление" не устанавливаются к false
) и подмножество DTD, если Вы существуете в ДОМЕ. Запись a Document
узел сериализирует весь документ. Entity
узлы, когда записано непосредственно LSSerializer.write
, выводит расширение объекта, но никакое пространство имен fixup не делается. Получающийся вывод будет допустим как внешний объект. true
, EntityReference
узлы сериализируются как ссылка на сущность формы" &entityName;
"в выводе. Игнорируются дочерние узлы (расширение) ссылки на сущность. Если параметрыfalse
, только дочерние элементы ссылки на сущность сериализируются. EntityReference
узлы без дочерних элементов (никакое соответствие Entity
узел или соответствие Entity
у узлов нет никаких дочерних элементов), всегда сериализируются. CDATAsections
содержа символы контента, которые не могут быть представлены в указанном выходном кодировании, обрабатывается согласноtrue
, CDATAsections
разделяются, и непредставимые символы сериализируются как ссылки цифры в обычном контенте. Точная позиция и число разделений не определяются. Если параметры устанавливаются к false
, непредставимые символы в a CDATAsection
сообщаются как "wf-invalid-character"
ошибки, еслиtrue
. Ошибка не восстанавливаема - нет никакого механизма для того, чтобы предоставить альтернативные символы и продолжаться с сериализацией. DocumentFragment
узлы сериализируются, сериализируя дочерние элементы фрагмента документа в порядке, они появляются во фрагменте документа. Отметьте: сериализация a Node
не всегда генерирует правильно построенный XML-документ, то есть a LSParser
мог бы бросить фатальные ошибки, анализируя получающуюся сериализацию.
В пределах символьных данных документа (за пределами разметки), любые символы, которые не могут быть представлены непосредственно, заменяются символьными ссылками. Возникновения' <' и '&' заменяются предопределенными объектами < и &. Другие предопределенные объекты (> ' и ") не мог бы использоваться, кроме где необходимый (например, использующий > в случаях такой как']]>'). Любые символы, которые не могут быть представлены непосредственно в выходной кодировке символов, сериализируются как ссылки цифры (и так как стандарты кодировки символов обычно используют шестнадцатеричные представления символов, используя шестнадцатеричное представление, когда сериализация символьных ссылок поощряется).
Позволить значениям атрибута содержать и одинарные и двойные кавычки, апостроф или символ одинарной кавычки (') может быть представлено как "'", и символ двойной кавычки (") как """. Новые знаки строки и другие символы, которые не могут быть представлены непосредственно в значениях атрибута в выходной кодировке символов, сериализируются как ссылка цифры.
В пределах разметки, но за пределами атрибутов, о любом возникновении символа, который не может быть представлен в выходной кодировке символов, сообщают как a DOMError
фатальная ошибка. Пример сериализировал бы элемент <LaCañada/> с encoding="us-ascii"
. Это закончится с генерацией a DOMError
"wf-invalid-character-in-node-name" (как предложено в
Когда требующийся, устанавливая параметрLSSerializer
к истине символьная нормализация выполняется согласно определению
Реализации обязаны поддерживать кодировки "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 пространства имен, связанный с элементами и атрибутами, являются непротиворечивыми. Если несогласованности будут найдены, то сериализированная форма документа будет изменена, чтобы удалить их. Метод, используемый для того, чтобы сделать пространство имен fixup, сериализируя документ, является алгоритмом, определенным в Приложении B.1, "Нормализация пространства имен", из [
Сериализируя документ, параметр "контент по умолчанию отбрасывания" управляет, сериализируются ли неуказанные данные.
Сериализируя, об ошибках и предупреждениях сообщают приложению через обработчик ошибок (LSSerializer.domConfig
's параметрDOMError.type
) из ошибок и предупреждений, определенных этой спецификацией:
"no-output-specified" [fatal]
LSOutput
если никакой вывод не определяется в LSOutput
. "unbound-prefix-in-entity-reference" [fatal]
true
и на объект, заменяющий текст которого содержит несвязанные префиксы пространства имен, ссылаются в расположении, где нет никакой привязки для префиксов пространства имен. "unsupported-encoding" [fatal]
В дополнение к повышению определенных ошибок и предупреждений, реализации, как ожидают, повысят реализацию определенные ошибки и предупреждения для любой другой ошибки и предупреждение случаев, таких как ошибки IO (файл, не найденный, отрицаемое разрешение...) и так далее.
См. также
Модификатор и Тип | Метод и Описание |
---|---|
DOMConfiguration |
getDomConfig()
DOMConfiguration объект, используемый LSSerializer сериализируя узел ДОМА. |
LSSerializerFilter |
getFilter()
Когда приложение обеспечит фильтр, сериализатор обратится к фильтру прежде, чем сериализировать каждый Узел.
|
Строка |
getNewLine()
Последовательность конца строки символов, которые будут использоваться в выписываемом XML.
|
void |
setFilter(LSSerializerFilter filter)
Когда приложение обеспечит фильтр, сериализатор обратится к фильтру прежде, чем сериализировать каждый Узел.
|
void |
setNewLine(String newLine)
Последовательность конца строки символов, которые будут использоваться в выписываемом XML.
|
boolean |
write(Node nodeArg, LSOutput destination)
Сериализируйте указанный узел как описано выше в общем описании
LSSerializer интерфейс. |
Строка |
writeToString(Node nodeArg)
Сериализируйте указанный узел как описано выше в общем описании
LSSerializer интерфейс. |
boolean |
writeToURI(Node nodeArg, String uri)
Метод удобства, который действует как будто
LSSerializer.write был вызван с a LSOutput без кодирования указанного и LSOutput.systemId набор к uri параметр. |
DOMConfiguration getDomConfig()
DOMConfiguration
объект, используемый LSSerializer
сериализируя узел ДОМА. DOMConfiguration
объекты для LSSerializer
добавляет, или изменяет, следующие параметры: "canonical-form"
true
true
установит параметры "структурная распечатка программы формата", "контент по умолчанию отбрасывания", и "xml-объявление", к false
. Установка одного из тех параметров к true
установит эти параметры к false
. Сериализация документа XML 1.1, когда "каноническая форма" true
генерирует фатальную ошибку. false
"discard-default-content"
true
Attr.specified
атрибут, чтобы решить, какие атрибуты должны быть отброшены. Отметьте, что некоторые реализации могли бы использовать любую информацию, доступную реализации (то есть XML-схема, DTD, Attr.specified
атрибут, и так далее), чтобы определить, что атрибуты и контент, чтобы отбросить, если эти параметры устанавливаются к true
. false
"format-pretty-print"
true
false
"ignore-unknown-character-denormalizations"
true
"unknown-character-denormalization"
предупреждение (вместо того, чтобы повысить ошибку, если эти параметры не устанавливаются) и игнорирует любые возможные денормализации, вызванные этими символами. false
"normalize-characters"
DOMConfiguration
в [true
. В то время как реализации ДОМА не обязаны поддерживать "xml-declaration"
true
Document
, Element
, или Entity
узел сериализируется, объявление XML, или текстовое объявление, должно быть включено. Версия (Document.xmlVersion
если документ является документом Уровня 3, и версия является ненулем, иначе используйте значение "1.0"), и выходное кодирование (см. LSSerializer.write
для деталей о том, как найти выходное кодирование) определяются в сериализированном объявлении XML. false
"xml-declaration-needed"
предупреждение, если это вызовет проблемы (то есть сериализированные данные имеет версию XML кроме String getNewLine()
null
сбросит его значение к значению по умолчанию. void setNewLine(String newLine)
null
сбросит его значение к значению по умолчанию. LSSerializerFilter getFilter()
DOMConfiguration
параметры были применены. Например, разделы CDATA не передадут к фильтру, еслиfalse
.void setFilter(LSSerializerFilter filter)
DOMConfiguration
параметры были применены. Например, разделы CDATA не передадут к фильтру, еслиfalse
.boolean write(Node nodeArg, LSOutput destination) throws LSException
LSSerializer
интерфейс. Вывод пишется предоставленному LSOutput
. LSOutput
, кодирование находится, смотря на информацию о кодировании, которая достижима через LSOutput
и элемент, который будет записан (или его документ владельца) в этом порядке: LSOutput.encoding
, Document.inputEncoding
, Document.xmlEncoding
. LSOutput
, никакой вывод определенная фатальная ошибка не повышается. nodeArg
- Узел, чтобы сериализировать.destination
- Место назначения для сериализированного ДОМА.true
если node
был успешно сериализирован. Возвратиться false
в случае, если нормальная обработка остановилась, но реализация продолжила сериализировать документ; результат сериализации, являющейся зависящим от реализации тогда.LSException
- SERIALIZE_ERR: Повышенный, если LSSerializer
было неспособно сериализировать узел. Приложения ДОМА должны присоединить a DOMErrorHandler
использование параметраboolean writeToURI(Node nodeArg, String uri) throws LSException
LSSerializer.write
был вызван с a LSOutput
без кодирования указанного и LSOutput.systemId
набор к uri
параметр.nodeArg
- Узел, чтобы сериализировать.uri
- URI, чтобы записать в.true
если node
был успешно сериализирован. Возвратиться false
в случае, если нормальная обработка остановилась, но реализация продолжила сериализировать документ; результат сериализации, являющейся зависящим от реализации тогда.LSException
- SERIALIZE_ERR: Повышенный, если LSSerializer
было неспособно сериализировать узел. Приложения ДОМА должны присоединить a DOMErrorHandler
использование параметраString writeToString(Node nodeArg) throws DOMException, LSException
LSSerializer
интерфейс. Вывод пишется a DOMString
это возвращается к вызывающей стороне. Используемое кодирование является кодированием DOMString
введите, то есть. UTF-16. Отметьте, что никакой Порядок байтов Марк не сгенерирован в a DOMString
объект.nodeArg
- Узел, чтобы сериализировать.DOMException
- DOMSTRING_SIZE_ERR: Повышенный, если получающаяся строка является слишком длинной, чтобы поместиться в a DOMString
.LSException
- SERIALIZE_ERR: Повышенный, если LSSerializer
было неспособно сериализировать узел. Приложения ДОМА должны присоединить a DOMErrorHandler
использование параметра
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.