|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface LSSerializer
LSSerializer обеспечивает API для того, чтобы он сериализировал выписывание документа ДОМА в XML. Данные XML пишутся строке или потоку вывода. Любые изменения или fixups, сделанный во время сериализации, влияют только на сериализированные данные. Document возразите и его дочерние элементы никогда не изменяются работой сериализации. Во время сериализации данных XML пространство имен fixup делается как определено в [], Приложение B. [] позволяют пустым строкам как реальному URI пространства имен. Если 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 к истине символьная нормализация выполняется согласно определению символов, включенных в приложение E на всех данных, которые будут сериализированы, и разметка и символьные данные. Символьный процесс нормализации влияет только на данные, как это пишется; это не изменяет представление 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 пространства имен, связанный с элементами и атрибутами, являются непротиворечивыми. Если несогласованности будут найдены, то сериализированная форма документа будет изменена, чтобы удалить их. Метод, используемый для того, чтобы сделать пространство имен 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"truetrue установит параметры "структурная распечатка программы формата", "контент значения по умолчанию отбрасывания", и "xml-объявление", к false. Установка одного из тех параметров к true установит эти параметры к false. Сериализация документа XML 1.1, когда "каноническая форма" true генерирует фатальную ошибку. false"discard-default-content"trueAttr.specified атрибут, чтобы решить, какие атрибуты должны быть отброшены. Отметьте, что некоторые реализации могли бы использовать любую информацию, доступную реализации (то есть XML-схема, DTD, Attr.specified атрибут, и так далее), чтобы определить, что атрибуты и контент, чтобы отбросить, если эти параметры устанавливаются к true. false"format-pretty-print"truefalse"ignore-unknown-character-denormalizations" true"unknown-character-denormalization" предупреждение (вместо того, чтобы повысить ошибку, если эти параметры не устанавливаются) и игнорирует любые возможные денормализации, вызванные этими символами. false"normalize-characters"DOMConfiguration в []. В отличие от этого в Ядре, значение по умолчанию для этого параметра true. В то время как реализации ДОМА не обязаны поддерживать символов в документе согласно приложению E , этот параметр должен быть активирован по умолчанию если поддерживающийся. "xml-declaration"trueDocument, 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 и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
ЧЕРНОВАЯ земля-b92