Интерфейс LSParser
public interface LSParser
LSParser предоставляет API для разбора XML и построения соответствующей структуры документа DOM. Экземпляр LSParser можно получить, вызвав метод DOMImplementationLS.createLSParser().
Как указано в [DOM Level 3 Core], когда документ впервые становится доступным через LSParser:
- никогда не будет двух смежных узлов типа NODE_TEXT, и никогда не будет пустых текстовых узлов.
- ожидается, что атрибуты
valueиnodeValueузлаAttrизначально будут возвращать нормализованное значение XML 1.0. Однако, если параметры "validate-if-schema" и "datatype-normalization" установлены вtrue, значения атрибутов могут отличаться от значений, полученных при нормализации атрибутов XML 1.0, в зависимости от используемой нормализации атрибутов. Если параметр "datatype-normalization" установлен вfalse, гарантируется нормализация атрибутов в соответствии с XML 1.0, а если список атрибутов не содержит деклараций пространства имен, атрибутattributesузлаElementпредставляет собой свойство [attributes], определенное в [XML Information Set].
Ожидается, что асинхронные объекты LSParser также будут реализовывать интерфейс events::EventTarget, чтобы можно было регистрировать обработчики событий на асинхронных объектах LSParser.
События, поддерживаемые асинхронными объектами LSParser, это:
- load
- Загрузка
LSParserзавершена. См. также определение интерфейсаLSLoadEvent. - progress
-
LSParserсигнализирует о прогрессе по мере разбора данных. Данная спецификация не пытается определить точное время отправки событий progress. Это намеренно оставлено зависящим от реализации. Вот один пример того, как приложение может отправлять события progress: После того, как анализатор начнёт получать данные, отправляется событие progress, чтобы указать на начало анализа. Далее, событие progress отправляется после обработки каждого 4096 байт данных. Это лишь один пример, и реализации могут выбирать отправлять события progress в любое время во время разбора или не отправлять их вообще. См. также определение интерфейсаLSProgressEvent.
Примечание: Все события, определенные в этой спецификации, используют URI пространства имен "http://www.w3.org/2002/DOMLS".
Во время разбора источника данных ошибки сообщаются приложению через обработчик ошибок (параметр "error-handler" LSParser.domConfig). Данная спецификация никоим образом не пытается определить все возможные ошибки, которые могут возникнуть при разборе XML или любого другого разметки, но некоторые распространённые случаи ошибок определены. Типы (DOMError.type) ошибок и предупреждений, определённые данной спецификацией, это:
-
"check-character-normalization-failure" [error] - Возникает, если параметр "check-character-normalization" установлен в true и встречается строка, не прошедшая проверку нормализации.
"doctype-not-allowed" [fatal]- Возникает, если параметр конфигурации "disallow-doctype" установлен в
trueи встречен тег doctype. "no-input-specified" [fatal]- Возникает при загрузке документа, если в объекте
LSInputне указан входной источник. -
"pi-base-uri-not-preserved" [warning] - Возникает, если встречается инструкция обработки в месте, где базовый URI инструкции обработки не может быть сохранён. Одним из примеров, когда будет поднято это предупреждение, является случай, если параметр конфигурации "entities" установлен в
falseи анализируется следующий XML-файл:<!DOCTYPE root [ <!ENTITY e SYSTEM 'subdir/myentity.ent' ]> <root> &e; </root>
Иsubdir/myentity.entсодержит:<one> <two/> </one> <?pi 3.14159?> <more/>
"unbound-prefix-in-entity" [warning]- Зависимое от реализации предупреждение, которое может быть поднято, если параметр конфигурации "namespaces" установлен в
trueи встречен необязательный префикс пространства имён в тексте подстановки сущности. Поднятие этого предупреждения не навязывается, поскольку некоторые существующие анализаторы могут не распознавать необязательные префиксы пространства имён в тексте подстановки сущностей. -
"unknown-character-denormalization" [fatal] - Возникает, если параметр конфигурации "ignore-unknown-character-denormalizations" установлен в
falseи встречен символ, для которого процессор не может определить свойства нормализации. -
"unsupported-encoding" [fatal] - Возникает, если встречена неподдерживаемая кодировка.
"unsupported-media-type" [fatal]- Возникает, если параметр конфигурации "supported-media-types-only" установлен в
trueи встречен неподдерживаемый тип носителя.
В дополнение к поднятию определённых ошибок и предупреждений, ожидается, что реализации будут поднимать ошибки и предупреждения, специфичные для реализации, для других случаев ошибок и предупреждений, таких как ошибки ввода/вывода (файл не найден, права доступа запрещены...), ошибки корректности XML и так далее.
См. также Спецификацию DOM Level 3 Load and Save.
- Since:
- 1.5
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final short |
ACTION_APPEND_AS_CHILDREN |
Добавить результат операции разбора в качестве дочерних узлов узла-контекста. |
static final short |
ACTION_INSERT_AFTER |
Вставить результат операции разбора как непосредственного следующего сиблинга узла-контекста. |
static final short |
ACTION_INSERT_BEFORE |
Вставить результат операции разбора как непосредственного предыдущего сиблинга узла-контекста. |
static final short |
ACTION_REPLACE |
Заменить узел-контекст результатом операции разбора. |
static final short |
ACTION_REPLACE_CHILDREN |
Заменить все дочерние узлы узла-контекста результатом операции разбора. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
abort() |
Прервать загрузку документа, который в данный момент загружается LSParser. |
boolean |
getAsync() |
true если LSParser асинхронный, false если синхронный. |
boolean |
getBusy() |
true если LSParser в данный момент занят загрузкой документа, в противном случае false. |
DOMConfiguration |
getDomConfig() |
Объект DOMConfiguration используемый при разборе источника данных. |
LSParserFilter |
getFilter() |
Если задан фильтр, реализация вызовет фильтр во время построения структуры дерева DOM. |
Document |
parse |
Разбор XML-документа из ресурса, идентифицированного LSInput. |
Document |
parseURI |
Разбор XML-документа из местоположения, идентифицированного URI [IETF RFC 2396]. |
Node |
parseWithContext |
Разбор XML-фрагмента из ресурса, идентифицированного LSInput и вставка содержимого в существующий документ в позиции, указанной аргументами context и action. |
void |
setFilter |
Если задан фильтр, реализация вызовет фильтр во время построения структуры дерева DOM. |
Подробное описание полей
ACTION_APPEND_AS_CHILDREN
static final short ACTION_APPEND_AS_CHILDREN
Element или DocumentFragment. - См. также:
ACTION_REPLACE_CHILDREN
static final short ACTION_REPLACE_CHILDREN
Element, Document или DocumentFragment. - См. также:
ACTION_INSERT_BEFORE
static final short ACTION_INSERT_BEFORE
Element или DocumentFragment. - См. также:
ACTION_INSERT_AFTER
static final short ACTION_INSERT_AFTER
Element или DocumentFragment. - См. также:
ACTION_REPLACE
static final short ACTION_REPLACE
Element или DocumentFragment. - См. также:
Подробное описание методов
getDomConfig
DOMConfiguration getDomConfig()
DOMConfiguration используемый при разборе входного источника. Этот DOMConfiguration специфичен для операции разбора. Значения параметров из этого DOMConfiguration объекта не передаются автоматически объекту DOMConfiguration в Document созданном или использованном в ходе операции разбора. Приложение DOM отвечает за передачу необходимых значений параметров из этого объекта DOMConfiguration объекту DOMConfiguration указанному в Document объекте. В дополнение к параметрам, распознаваемым в интерфейсе DOMConfiguration, определённом в [DOM Level 3 Core] , объекты
DOMConfiguration для LSParser добавляют или изменяют следующие параметры: -
"charset-overrides-xml-encoding" -
true- [необязательно] (по умолчанию) Если протокол более высокого уровня, такой как HTTP [IETF RFC 2616], предоставляет указание кодировки символов входного потока, это будет переопределять любую кодировку, указанную в объявлении XML или объявлении текста (см. также раздел 4.3.3 "Кодировка символов в сущностях" в [XML 1.0]). Явное задание кодировки в
LSInputпереопределяет любую кодировку из протокола. false- [обязательно] Парсер игнорирует любую информацию о кодировке набора символов из протоколов более высокого уровня.
"disallow-doctype"-
-
true - [необязательно] Выбросить фатальную ошибку "doctype-not-allowed", если при разборе документа найден узел doctype. Это полезно при работе с такими вещами, как SOAP-конверты, где узлы doctype не допускаются.
false- [обязательно] (по умолчанию) Разрешить узлы doctype в документе.
-
-
"ignore-unknown-character-denormalizations" -
-
true - [обязательно] (по умолчанию) Если при проверке полной нормализации, когда поддерживается [XML 1.1], процессор встречает символы, для которых он не может определить свойства нормализации, тогда процессор проигнорирует любые возможные денсиализации, вызванные этими символами. Этот параметр игнорируется для [XML 1.0].
-
false - [необязательно] Сообщить о фатальной ошибке "unknown-character-denormalization", если встречается символ, для которого процессор не может определить свойства нормализации.
-
"infoset"- См. определение
DOMConfigurationдля описания этого параметра. В отличие от [DOM Level 3 Core] , этот параметр будет по умолчаниюtrueдляLSParser. "namespaces"-
true- [обязательно] (по умолчанию) Выполнить обработку пространства имён, как определено в [XML Namespaces] и [XML Namespaces 1.1] .
false- [необязательно] Не выполнять обработку пространства имён.
-
"resource-resolver" - [обязательно] Ссылка на объект
LSResourceResolverили null. Если значение этого параметра не null, когда встречается внешний ресурс (например, внешняя XML-сущность или расположение XML-схемы), реализация запросит, чтобыLSResourceResolver, на который ссылается этот параметр, разрешил ресурс. "supported-media-types-only"-
-
true - [необязательно] Проверять, является ли тип носителя обработанного ресурса поддерживаемым типом носителя. Если встречается неподдерживаемый тип носителя, будет выброшена фатальная ошибка типа "unsupported-media-type". Типы носителей, определённые в [IETF RFC 3023], должны всегда приниматься.
false- [обязательно] (по умолчанию) Принять любой тип носителя.
-
"validate"- См. определение
DOMConfigurationдля описания этого параметра. В отличие от [DOM Level 3 Core] , обработка внутреннего подмножества всегда выполняется, даже если этот параметр установлен вfalse. -
"validate-if-schema" - См. определение
DOMConfigurationдля описания этого параметра. В отличие от [DOM Level 3 Core] , обработка внутреннего подмножества всегда выполняется, даже если этот параметр установлен вfalse. -
"well-formed" - См. определение
DOMConfigurationдля описания этого параметра. В отличие от [DOM Level 3 Core] , этот параметр не может быть установлен вfalse.
getFilter
LSParserFilter getFilter()
Фильтр вызывается после применения операций, запрошенных параметрами
DOMConfiguration . Например, если "validate" установлен в true, валидация выполняется до вызова фильтра.setFilter
void setFilter(LSParserFilter filter)
Фильтр вызывается после применения операций, запрошенных параметрами
DOMConfiguration . Например, если "validate" установлен в true, валидация выполняется до вызова фильтра.getAsync
boolean getAsync()
true если LSParser асинхронный, false если он синхронный.getBusy
boolean getBusy()
true если LSParser в настоящее время загружает документ, в противном случае false.parse
Document parse(LSInput input) throws DOMException, LSException
LSInput. - Параметры:
-
input-LSInput, из которого необходимо прочитать исходный документ. - Возвращает:
- Если
LSParserявляется синхроннымLSParser, возвращается новый созданный и заполненныйDocument. ЕслиLSParserявляется асинхронным, возвращаетсяnull, так как объект документа может ещё не быть создан к моменту возврата этого метода. - Исключения:
-
DOMException- INVALID_STATE_ERR: Выбрасывается, если атрибутLSParserLSParser.busyимеет значениеtrue. -
LSException- PARSE_ERR: Выбрасывается, еслиLSParserне смог загрузить XML-документ. Приложения DOM должны прикрепитьDOMErrorHandlerиспользуя параметр "обработчик ошибок", если необходимо получить подробную информацию об ошибке.
parseURI
Document parseURI(String uri) throws DOMException, LSException
- Параметры:
-
uri- Расположение XML-документа для чтения. - Возвращает:
- Если
LSParserявляется синхроннымLSParser, возвращается новый созданный и заполненныйDocument, илиnullв случае возникновения ошибки. ЕслиLSParserявляется асинхронным, возвращаетсяnull, так как объект документа может ещё не быть создан к моменту возврата этого метода. - Исключения:
-
DOMException- INVALID_STATE_ERR: Выбрасывается, если атрибутLSParser.busyимеет значениеtrue. -
LSException- PARSE_ERR: Выбрасывается, еслиLSParserне смог загрузить XML-документ. Приложения DOM должны прикрепитьDOMErrorHandlerиспользуя параметр "обработчик ошибок", если необходимо получить подробную информацию об ошибке.
parseWithContext
Node parseWithContext(LSInput input, Node contextArg, short action) throws DOMException, LSException
LSInput, и вставка содержимого в существующий документ в позиции, указанной context и action аргументами. При разборе входного потока для разрешения не связанных префиксов имён пространств используется узел контекста (или его родитель, в зависимости от того, где результат будет вставлен). Узел контекста ownerDocument (или сам узел, если узел типа DOCUMENT_NODE используется для разрешения атрибутов по умолчанию и ссылок на сущности. При вставке новых данных в документ, по крайней мере, одно событие изменения генерируется на каждый новый непосредственный дочерний или смежный узел узла контекста.
Если узел контекста является узлом
Document и действие является ACTION_REPLACE_CHILDREN, тогда документ, переданный как узел контекста, будет изменён таким образом, что его xmlEncoding, documentURI, xmlVersion, inputEncoding, xmlStandalone, и все другие подобные атрибуты будут установлены так, как если бы исходный источник был проанализирован с помощью LSParser.parse(). Этот метод всегда синхронный, даже если
LSParser является асинхронным (LSParser.async равно true). При вызове
parseWithContext, значения следующих параметров конфигурации будут игнорироваться и вместо этого всегда будут использоваться их значения по умолчанию: "validate", "validate-if-schema", и "element-content-whitespace". Другие параметры будут обработаны обычно, и ожидается, что анализатор вызовет LSParserFilter так, как если бы был проанализирован весь документ.- Параметры:
-
input-LSInput, из которого необходимо прочитать исходный документ. Исходный документ должен быть XML-фрагментом, т.е. чем-либо кроме полного XML-документа (кроме случая, когда узел контекста типаDOCUMENT_NODE, и действие являетсяACTION_REPLACE_CHILDREN), DOCTYPE (внутренний подмножество), объявление сущности(ей), объявление(я) обозначения, или объявление(я) XML или текста. -
contextArg- Узел, который используется в качестве контекста для данных, которые анализируются. Этот узел должен быть узломDocument, узломDocumentFragment, или узлом типа, который разрешён в качестве дочернего узла узлаElement, например, это не может быть узломAttribute. -
action- Этот параметр описывает действие, которое должно быть выполнено между новым набором узлов, которые вставляются, и существующими дочерними узлами узла контекста. Набор возможных действий определён вACTION_TYPESвыше. - Возвращает:
- Возвращает узел, который является результатом операции анализа. Если результат содержит более одного узла верхнего уровня, возвращается первый.
- Исключения:
-
DOMException- HIERARCHY_REQUEST_ERR: Выбрасывается, если содержимое не может заменить, быть вставлено перед, после или как дочерний узел узла контекста (см. такжеNode.insertBeforeилиNode.replaceChildв [DOM Level 3 Core] ).
NOT_SUPPORTED_ERR: Выбрасывается, еслиLSParserне поддерживает этот метод, или если узел контекста является узлом типаDocumentи реализация DOM не поддерживает замену дочернего узлаDocumentTypeили дочернего узлаElement.
NO_MODIFICATION_ALLOWED_ERR: Выбрасывается, если узел контекста является узлом только для чтения, и содержимое добавляется в его список дочерних узлов, или если родительский узел узла контекста является узлом только для чтения, и содержимое вставляется в его список дочерних узлов.
INVALID_STATE_ERR: Выбрасывается, если атрибутLSParser.busyимеет значениеtrue. -
LSException- PARSE_ERR: Выбрасывается, еслиLSParserне смог загрузить XML-фрагмент. Приложения DOM должны прикрепитьDOMErrorHandlerиспользуя параметр "обработчик ошибок", если необходимо получить подробную информацию об ошибке.
abort
void abort()
LSParser. Если LSParser в данный момент не занят, вызов этого метода ничего не делает.
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.xml/org/w3c/dom/ls/LSParser.html