Интерфейс 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 или текстовом объявлении (см. также раздел 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], дляLSParserзначение этого параметра по умолчанию —true. "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: Выдаётся, если атрибутLSParser.busyобъектаLSParserимеет значениеtrue. -
LSException— PARSE_ERR: Выдаётся, еслиLSParserне удалось загрузить XML-документ. DOM-приложениям следует назначитьDOMErrorHandlerс помощью параметра "error-handler", если им нужны подробности ошибки.
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с помощью параметра "error-handler", если им нужны подробности ошибки.
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). Если при разборе возникает ошибка, вызывающий объект получает уведомление через экземпляр
ErrorHandler, связанный с параметром "error-handler" объекта DOMConfiguration. При вызове
parseWithContext значения следующих параметров конфигурации игнорируются и вместо них всегда используются значения по умолчанию: "validate", "validate-if-schema" и "element-content-whitespace". Остальные параметры обрабатываются обычным образом, и предполагается, что парсер вызовет LSParserFilter так же, как при разборе целого документа.- Параметры:
-
input—LSInput, из которого следует прочитать исходный документ. Исходный документ должен быть фрагментом XML, то есть чем угодно, кроме целого XML-документа (за исключением случая, когда контекстный узел имеет типDOCUMENT_NODE, а действие —ACTION_REPLACE_CHILDREN), DOCTYPE (внутреннего подмножества), объявления сущности (объявлений сущностей), объявления нотации (объявлений нотаций) или объявления XML либо текста (объявлений 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с помощью параметра "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://docs.oracle.com/en/java/javase/25/docs/api/java.xml/org/w3c/dom/ls/LSParser.html