Интерфейс 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) уровня 3.
- С:
- 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 или декларации Text (см. также раздел 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.- Parameters:
-
input-LSInput, из которого будет считываться источник документа. - Returns:
- Если
LSParserявляется синхроннымLSParser, возвращается новый созданный и заполненныйDocument. ЕслиLSParserявляется асинхронным, возвращаетсяnull, так как объект документа может ещё не быть создан к моменту возвращения этого метода. - Throws:
-
DOMException- INVALID_STATE_ERR: Вызывается, если атрибутLSParserLSParser.busyравенtrue. -
LSException- PARSE_ERR: Вызывается, еслиLSParserне смог загрузить XML-документ. Приложения DOM должны прикрепить обработчик ошибокDOMErrorHandlerиспользуя параметр "error-handler", если требуется получить подробности об ошибке.
parseURI
Document parseURI(String uri) throws DOMException, LSException
- Parameters:
-
uri- Местоположение XML-документа для чтения. - Returns:
- Если
LSParserявляется синхроннымLSParser, возвращается новый созданный и заполненныйDocumentилиnull, если произошла ошибка. ЕслиLSParserявляется асинхронным, возвращаетсяnull, так как объект документа может ещё не быть создан к моменту возвращения этого метода. - Throws:
-
DOMException- INVALID_STATE_ERR: Вызывается, если атрибутLSParser.busyравенtrue. -
LSException- PARSE_ERR: Вызывается, еслиLSParserне смог загрузить XML-документ. Приложения DOM должны прикрепить обработчик ошибокDOMErrorHandlerиспользуя параметр "error-handler", если требуется получить подробности об ошибке.
parseWithContext
Node parseWithContext(LSInput input, Node contextArg, short action) throws DOMException, LSException
LSInput, и вставить содержимое в существующий документ в позиции, заданной параметрами context и action. При обработке входного потока используется узел контекста (или его родитель, в зависимости от места вставки результата) для разрешения незаявленных префиксов пространства имён. Узел контекста используется для разрешения атрибутов по умолчанию и ссылок на сущности. При вставке новых данных в документ, по крайней мере, одно событие изменения происходит для каждого непосредственного дочернего элемента или сиблинга узла контекста.
Если узел контекста является узлом
Document, а действие равно ACTION_REPLACE_CHILDREN, то документ, переданный как узел контекста, будет изменён таким образом, что его xmlEncoding, documentURI, xmlVersion, inputEncoding, xmlStandalone и все другие подобные атрибуты будут установлены так, как они были бы установлены, если бы источник входных данных обрабатывался с помощью LSParser.parse(). Этот метод всегда синхронный, даже если
LSParser является асинхронным (LSParser.async является true). Если при обработке возникла ошибка, вызывающий получает уведомление через экземпляр
ErrorHandler, связанный с параметром "error-handler" в DOMConfiguration. При вызове
parseWithContext значения следующих параметров конфигурации будут проигнорированы, и вместо них всегда будут использоваться их значения по умолчанию: "validate", "validate-if-schema", и "element-content-whitespace". Другие параметры будут обработаны обычным образом, и ожидается, что анализатор вызовет LSParserFilter так же, как если бы обрабатывался весь документ.- Parameters:
-
input-LSInput, из которого будет считываться исходный документ. Исходный документ должен быть фрагментом XML, то есть всё, кроме полного XML-документа (кроме случаев, когда узел контекста типаDOCUMENT_NODE, и действие равноACTION_REPLACE_CHILDREN), DOCTYPE (внутренний подмножество), деклараций сущности(ей), деклараций обозначения(ий), или деклараций XML или текста. -
contextArg- Узел, используемый в качестве контекста для обрабатываемых данных. Этот узел должен быть узломDocument, узломDocumentFragmentили узлом, который разрешается в качестве дочернего элемента узлаElement, например, он не может быть узломAttribute. -
action- Этот параметр описывает действие, которое должно быть выполнено между новым набором узлов, которые будут вставлены, и существующими дочерними элементами узла контекста. Набор возможных действий определён вACTION_TYPESвыше. - Returns:
- Возвращает узел, являющийся результатом операции обработки. Если результат содержит более одного узла верхнего уровня, возвращается первый.
- Throws:
-
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используя параметр "error-handler", если требуется получить подробности об ошибке.
abort
void abort()
LSParser. Если LSParser в данный момент не занят, вызов этого метода ничего не делает.
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/org/w3c/dom/ls/LSParser.html