Класс HTMLDocument
- Все реализованные интерфейсы:
Serializable, Document, StyledDocument
public class HTMLDocument extends DefaultStyledDocument
HTMLDocument.HTMLReader, реализующим протокол HTMLEditorKit.ParserCallback, ожидаемый анализатором. Чтобы изменить структуру, можно создать подкласс HTMLReader и переопределить метод getReader(int), чтобы он возвращал новую реализацию reader. Подробности о создаваемой по умолчанию структуре см. в документации HTMLReader. Предполагается, что документ не теряет данные (хотя при воспроизведении формат HTML может измениться). Документ моделирует только HTML и не пытается хранить в себе атрибуты отображения. Элементы идентифицируются атрибутом StyleContext.NameAttribute, который всегда должен иметь значение типа HTML.Tag, указывающее вид элемента. Некоторые элементы (например, комментарии) создаются автоматически. HTMLFactory использует этот атрибут, чтобы определить, какое представление создать.
Этот документ поддерживает инкрементальную загрузку. Свойство TokenThreshold определяет, какая часть документа будет буферизована перед попыткой обновить структуру элементов документа. Это свойство устанавливается EditorKit, чтобы подклассы могли отключить его.
Свойство Base определяет URL, относительно которого разрешаются относительные URL. По умолчанию это будет Document.StreamDescriptionProperty, если значение свойства является URL. Если встречается тег <BASE>, базовым становится URL, указанный этим тегом. Поскольку базовый URL является свойством, его, разумеется, можно задать напрямую.
В этом документе по умолчанию для хранения содержимого используется буфер с промежутком (GapContent). Альтернативные механизмы можно предоставить с помощью конструктора, принимающего реализацию Content.
Изменение HTMLDocument
Помимо методов для изменения HTMLDocument, предоставляемых интерфейсами Document и StyledDocument, HTMLDocument содержит ряд вспомогательных методов. Следующие методы можно использовать для вставки HTML-содержимого в существующий документ.
setInnerHTML(Element, String)setOuterHTML(Element, String)insertBeforeStart(Element, String)insertAfterStart(Element, String)insertBeforeEnd(Element, String)insertAfterEnd(Element, String)
В следующих примерах показано использование этих методов. Каждый пример предполагает, что HTML-документ инициализирован следующим образом:
JEditorPane p = new JEditorPane();
p.setContentType("text/html");
p.setText("..."); // Document text is provided below.
HTMLDocument d = (HTMLDocument) p.getDocument();
При следующем HTML-содержимом:
<html>
<head>
<title>An example HTMLDocument</title>
<style type="text/css">
div { background-color: silver; }
ul { color: blue; }
</style>
</head>
<body>
<div id="BOX">
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</div>
</body>
</html>
Для всех методов изменения HTML-документа требуется Element. Элементы можно получить из HTML-документа с помощью метода getElement(Element e, Object attribute, Object value). Он возвращает первый дочерний элемент, содержащий указанный атрибут с заданным значением, при обходе в глубину. Например, d.getElement(d.getDefaultRootElement(),
StyleConstants.NameAttribute, HTML.Tag.P) возвращает первый элемент абзаца.
Удобный способ поиска элементов — метод getElement(String); он возвращает элемент, атрибут ID которого совпадает с указанным значением. Например, d.getElement("BOX") возвращает элемент DIV.
Для поиска всех вхождений указанного HTML-тега в документе также можно использовать метод getIterator(HTML.Tag t).
Вставка элементов
Элементы можно вставлять перед или после существующих дочерних элементов любого нелистового элемента с помощью методов insertAfterStart и insertBeforeEnd. Например, если e — это элемент DIV, то d.insertAfterStart(e, "<ul><li>List
Item</li></ul>") вставляет список перед первым абзацем, а d.insertBeforeEnd(e, "<ul><li>List
Item</li></ul>") вставляет список после последнего абзаца. Блок DIV становится родительским элементом для вновь вставленных элементов.
Соседние элементы можно вставлять перед или после любого элемента с помощью методов insertBeforeStart и insertAfterEnd. Например, если e — это элемент DIV, то d.insertBeforeStart(e,
"<ul><li>List Item</li></ul>") вставляет список перед элементом DIV, а d.insertAfterEnd(e,
"<ul><li>List Item</li></ul>") вставляет список после элемента DIV. Вновь вставленные элементы становятся соседними элементами DIV.
Замена элементов
Элементы и все их потомки можно заменить с помощью методов setInnerHTML и setOuterHTML. Например, если e — это элемент DIV, то d.setInnerHTML(e, "<ul><li>List
Item</li></ul>") заменяет все дочерние абзацы списком, а d.setOuterHTML(e, "<ul><li>List
Item</li></ul>") заменяет сам элемент DIV. В последнем случае родительским элементом списка будет элемент BODY.
Краткое описание
В следующей таблице показан пример документа и результаты различных описанных выше методов.
| Пример | insertAfterStart | insertBeforeEnd | insertBeforeStart | insertAfterEnd | setInnerHTML | setOuterHTML |
|---|---|---|---|---|---|---|
| Абзац 1 Абзац 2 |
Абзац 1 Абзац 2 | Абзац 1 Абзац 2
|
Абзац 1 Абзац 2 | Абзац 1 Абзац 2
|
|
|
Предупреждение: Сериализованные объекты этого класса будут несовместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4 в пакет java.beans добавлена поддержка долговременного хранения всех JavaBeans. См. XMLEncoder.
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
class |
HTMLDocument.BlockElement |
Элемент, представляющий структурный блок HTML. |
class |
HTMLDocument.HTMLReader |
HTML reader для загрузки HTML-документа со структурой элементов HTML. |
static class |
HTMLDocument.Iterator |
Итератор для перебора тегов определённого типа. |
class |
HTMLDocument.RunElement |
Элемент, представляющий фрагмент текста с набором назначенных ему атрибутов HTML на уровне символов. |
Вложенные классы/интерфейсы, объявленные в классе DefaultStyledDocument
DefaultStyledDocument.AttributeUndoableEdit, DefaultStyledDocument.ElementBuffer, DefaultStyledDocument.ElementSpec, DefaultStyledDocument.SectionElement
Вложенные классы/интерфейсы, объявленные в классе AbstractDocument
AbstractDocument.AbstractElement, AbstractDocument.AttributeContext, AbstractDocument.BranchElement, AbstractDocument.Content, AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractDocument.LeafElement
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
AdditionalComments |
Значение ключа свойства документа. |
Поля, объявленные в классе DefaultStyledDocument
buffer, BUFFER_SIZE_DEFAULT
Поля, объявленные в классе AbstractDocument
BAD_LOCATION, BidiElementName, ContentElementName, ElementNameAttribute, listenerList, ParagraphElementName, SectionElementName
Поля, объявленные в интерфейсе Document
StreamDescriptionProperty, TitleProperty
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
HTMLDocument() |
Создаёт HTML-документ с размером буфера по умолчанию и механизмом хранения стилей/атрибутов StyleSheet по умолчанию. |
HTMLDocument |
Создаёт HTML-документ с указанной реализацией хранилища содержимого и указанным механизмом хранения стилей/атрибутов. |
HTMLDocument |
Создаёт HTML-документ с реализацией хранилища содержимого по умолчанию и указанным механизмом хранения стилей/атрибутов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
create |
Заменяет содержимое документа указанными спецификациями элементов. |
protected Element |
createBranchElement |
Создаёт ветвевой элемент документа, который может содержать другие элементы. |
protected AbstractDocument.AbstractElement |
createDefaultRoot() |
Создаёт корневой элемент для представления структуры документа по умолчанию. |
protected Element |
createLeafElement |
Создаёт листовой элемент документа, непосредственно представляющий текст (у него нет дочерних элементов). |
protected void |
fireChangedUpdate |
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа. |
protected void |
fireUndoableEditUpdate |
Уведомляет всех слушателей, зарегистрировавших интерес к уведомлениям о событиях этого типа. |
URL |
getBase() |
Возвращает расположение, относительно которого разрешаются относительные URL. |
Element |
getElement |
Возвращает элемент с заданным идентификатором Attribute. |
Element |
getElement |
Возвращает дочерний элемент e, содержащий атрибут attribute со значением value, или null, если такой элемент не найден. |
HTMLDocument.Iterator |
getIterator |
Получает итератор для указанного HTML-тега. |
HTMLEditorKit.Parser |
getParser() |
Возвращает анализатор, используемый при вставке HTML в существующий документ. |
boolean |
getPreservesUnknownTags() |
Возвращает поведение анализатора при обнаружении неизвестных тегов. |
HTMLEditorKit.ParserCallback |
getReader |
Получает reader, который анализатор должен использовать для загрузки документа с HTML. |
HTMLEditorKit.ParserCallback |
getReader |
Возвращает reader, который анализатор должен использовать для загрузки документа с HTML. |
StyleSheet |
getStyleSheet() |
Получает StyleSheet с правилами отображения (CSS), заданными непосредственно в HTML-документе. |
int |
getTokenThreshold() |
Возвращает количество токенов, которые нужно буферизовать перед попыткой обновить структуру элементов документа. |
protected void |
insert |
Вставляет новые элементы группой. |
void |
insertAfterEnd |
Вставляет HTML, заданный строкой, после конца указанного элемента. |
void |
insertAfterStart |
Вставляет HTML, заданный строкой, в начало элемента. |
void |
insertBeforeEnd |
Вставляет HTML, заданный строкой, в конец элемента. |
void |
insertBeforeStart |
Вставляет HTML, заданный строкой, перед началом указанного элемента. |
protected void |
insertUpdate |
Обновляет структуру документа в результате вставки текста. |
void |
processHTMLFrameHyperlinkEvent |
Обрабатывает HyperlinkEvents, создаваемые документами во фрейме HTML. |
void |
setBase |
Задаёт расположение, относительно которого разрешаются относительные URL. |
void |
setInnerHTML |
Заменяет дочерние элементы указанного элемента содержимым, заданным в виде HTML-строки. |
void |
setOuterHTML |
Заменяет указанный элемент в родительском элементе содержимым, заданным в виде HTML-строки. |
void |
setParagraphAttributes |
Задаёт атрибуты абзаца. |
void |
setParser |
Задаёт анализатор, используемый методами вставки HTML в существующий документ, такими как setInnerHTML и setOuterHTML. |
void |
setPreservesUnknownTags |
Определяет, как анализатор обрабатывает неизвестные теги. |
void |
setTokenThreshold |
Задаёт количество токенов, которые нужно буферизовать перед попыткой обновить структуру элементов документа. |
Методы, объявленные в классе DefaultStyledDocument
addDocumentListener, addStyle, getBackground, getCharacterElement, getDefaultRootElement, getFont, getForeground, getLogicalStyle, getParagraphElement, getStyle, getStyleNames, removeDocumentListener, removeElement, removeStyle, removeUpdate, setCharacterAttributes, setLogicalStyle, styleChanged
Методы, объявленные в классе AbstractDocument
addUndoableEditListener, createPosition, dump, fireInsertUpdate, fireRemoveUpdate, getAsynchronousLoadPriority, getAttributeContext, getBidiRootElement, getContent, getCurrentWriter, getDocumentFilter, getDocumentListeners, getDocumentProperties, getEndPosition, getLength, getListeners, getProperty, getRootElements, getStartPosition, getText, getText, getUndoableEditListeners, insertString, postRemoveUpdate, putProperty, readLock, readUnlock, remove, removeUndoableEditListener, render, replace, setAsynchronousLoadPriority, setDocumentFilter, setDocumentProperties, writeLock, writeUnlock
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе Document
addUndoableEditListener, createPosition, getEndPosition, getLength, getProperty, getRootElements, getStartPosition, getText, getText, insertString, putProperty, remove, removeUndoableEditListener, render
Подробное описание полей
AdditionalComments
public static final String AdditionalComments
- См. также:
Подробное описание конструкторов
HTMLDocument
public HTMLDocument()
StyleSheet по умолчанию. Это вспомогательный метод для конструктора HTMLDocument(Content, StyleSheet).HTMLDocument
public HTMLDocument(StyleSheet styles)
HTMLDocument(Content, StyleSheet).- Параметры:
-
styles— стили
HTMLDocument
public HTMLDocument(AbstractDocument.Content c, StyleSheet styles)
- Параметры:
-
c— контейнер для содержимого -
styles— стили
Подробное описание методов
getReader
public HTMLEditorKit.ParserCallback getReader(int pos)
HTMLDocument.HTMLReader. При необходимости подклассы могут переопределить этот метод, чтобы изменить способ структурирования документа. (Например, для обработки пользовательских тегов или структурного представления элементов символьного стиля.)- Параметры:
-
pos— начальная позиция - Возвращает:
- средство чтения, используемое анализатором для загрузки документа
getReader
public HTMLEditorKit.ParserCallback getReader(int pos, int popDepth, int pushDepth, HTML.Tag insertTag)
HTMLDocument.HTMLReader. При необходимости подклассы могут переопределить этот метод, чтобы изменить способ структурирования документа. (Например, для обработки пользовательских тегов или структурного представления элементов символьного стиля.) Это вспомогательный метод для getReader(int, int, int, HTML.Tag, TRUE).
- Параметры:
-
pos— начальная позиция -
popDepth— количествоElementSpec.EndTagTypes, которые нужно создать перед вставкой -
pushDepth— количествоElementSpec.StartTagTypesс направлениемElementSpec.JoinNextDirection, которые нужно создать перед вставкой, но после создания закрывающих тегов -
insertTag— первый тег, с которого начинается вставка в документ - Возвращает:
- средство чтения, используемое анализатором для загрузки документа
getBase
public URL getBase()
- Возвращает:
- базовое расположение
setBase
public void setBase(URL u)
Кроме того, базовое расположение StyleSheet устанавливается в u, как и базовое расположение документа.
- Параметры:
-
u— требуемый базовый URL
insert
protected void insert(int offset, DefaultStyledDocument.ElementSpec[] data) throws BadLocationException
- Переопределяет:
-
insertв классеDefaultStyledDocument - Параметры:
-
offset— начальное смещение -
data— данные элемента - Вызывает исключение:
-
BadLocationException— если указанная позиция не является допустимым расположением в соответствующем документе.
insertUpdate
protected void insertUpdate(AbstractDocument.DefaultDocumentEvent chng, AttributeSet attr)
- Переопределяет:
-
insertUpdateв классеDefaultStyledDocument - Параметры:
-
chng— описание изменения документа -
attr— атрибуты
create
protected void create(DefaultStyledDocument.ElementSpec[] data)
- Переопределяет:
-
createв классеDefaultStyledDocument - Параметры:
-
data— новое содержимое документа
setParagraphAttributes
public void setParagraphAttributes(int offset, int length, AttributeSet s, boolean replace)
Этот метод потокобезопасен, хотя большинство методов Swing таковыми не являются. Дополнительные сведения см. в разделе Параллелизм в Swing.
- Определен в:
-
setParagraphAttributesв интерфейсеStyledDocument - Переопределяет:
-
setParagraphAttributesв классеDefaultStyledDocument - Параметры:
-
offset— смещение внутри абзаца (должно быть не меньше 0) -
length— количество затрагиваемых символов (должно быть не меньше 0) -
s— атрибуты -
replace— следует ли заменять существующие атрибуты или объединять их
getStyleSheet
public StyleSheet getStyleSheet()
StyleSheet с правилами отображения, специфичными для документа (CSS), указанными непосредственно в HTML-документе.- Возвращает:
StyleSheet
getIterator
public HTMLDocument.Iterator getIterator(HTML.Tag t)
- Параметры:
-
t— запрошенныйHTML.Tag - Возвращает:
Iteratorдля указанного HTML-тега- См. также:
createLeafElement
protected Element createLeafElement(Element parent, AttributeSet a, int p0, int p1)
HTMLDocument.RunElement.- Переопределяет:
-
createLeafElementв классеAbstractDocument - Параметры:
-
parent— родительский элемент -
a— атрибуты элемента -
p0— начало диапазона (должно быть не меньше 0) -
p1— конец диапазона (должен быть не меньше p0) - Возвращает:
- новый элемент
createBranchElement
protected Element createBranchElement(Element parent, AttributeSet a)
HTMLDocument.BlockElement.- Переопределяет:
-
createBranchElementв классеAbstractDocument - Параметры:
-
parent— родительский элемент -
a— атрибуты - Возвращает:
- элемент
createDefaultRoot
protected AbstractDocument.AbstractElement createDefaultRoot()
- Переопределяет:
-
createDefaultRootв классеDefaultStyledDocument - Возвращает:
- основу элемента
setTokenThreshold
public void setTokenThreshold(int n)
- Параметры:
-
n— количество токенов для буферизации
getTokenThreshold
public int getTokenThreshold()
Integer.MAX_VALUE.- Возвращает:
- количество токенов для буферизации
setPreservesUnknownTags
public void setPreservesUnknownTags(boolean preservesTags)
- Параметры:
-
preservesTags— true, если неизвестные теги следует сохранять в модели; в противном случае теги отбрасываются - См. также:
getPreservesUnknownTags
public boolean getPreservesUnknownTags()
- Возвращает:
- true, если неизвестные теги следует сохранять при анализе
- См. также:
processHTMLFrameHyperlinkEvent
public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent e)
HyperlinkEvents, создаваемые документами в HTML-фрейме. Тип HyperlinkEvent, как следует из параметра, — HTMLFrameHyperlinkEvent. Помимо обычной информации, содержащейся в HyperlinkEvent, это событие содержит элемент, соответствующий фрейму, в котором был выполнен щелчок (исходный элемент), и имя целевого фрейма. Имя целевого фрейма может иметь одно из четырех значений: - _self
- _parent
- _top
- именованный фрейм
HTML.Attribute.SRC и генерируется событие ChangedUpdate. Если целевое значение — _parent, удаляется родительский элемент, то есть элемент <FRAMESET>, затем вставляется новый элемент <FRAME>, его атрибуту HTML.Attribute.SRC задается значение, равное URL назначения, и генерируются события RemovedUpdate и InsertUpdate.
Если целевое значение — _top, этот метод ничего не делает. В реализации представления для фрейма, а именно в FrameView, обрабатывается значение _top. Поскольку _top подразумевает замену всего документа, такую обработку имеет смысл выполнять вне документа, который будет заменен.
Если целевое значение — именованный фрейм, в иерархии элементов выполняется поиск элемента с именем, равным целевому; его атрибут HTML.Attribute.SRC обновляется и генерируется событие ChangedUpdate.
- Параметры:
-
e— событие
setParser
public void setParser(HTMLEditorKit.Parser parser)
setInnerHTML и setOuterHTML. Метод HTMLEditorKit.createDefaultDocument задает анализатор за вас. Если вы создаете HTMLDocument вручную, не забудьте соответствующим образом задать анализатор.
- Параметры:
-
parser— анализатор, используемый для вставки текста - Появился в версии:
- 1.3
getParser
public HTMLEditorKit.Parser getParser()
- Возвращает:
- анализатор, используемый для вставки текста
- Появился в версии:
- 1.3
setInnerHTML
public void setInnerHTML(Element elem, String htmlText) throws BadLocationException, IOException
Это приведет как минимум к двум событиям: n вставкам, за которыми следует удаление.
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов setInnerHTML(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
|
<div>
\
<ul>
\
<li>
Параметр elem не должен быть листовым элементом, иначе будет выброшено исключение IllegalArgumentException. Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— ветвевой элемент, дочерние элементы которого будут заменены -
htmlText— строка, которую нужно проанализировать и назначитьelem - Вызывает исключение:
-
IllegalArgumentException— еслиelemявляется листовым элементом -
IllegalStateException— еслиHTMLEditorKit.Parserне определен -
BadLocationException— если замена невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
setOuterHTML
public void setOuterHTML(Element elem, String htmlText) throws BadLocationException, IOException
Это приведет как минимум к двум событиям: n вставкам, за которыми следует удаление.
При замене листового элемента будет предпринята попытка добавить символ новой строки, если он необходим. Это может привести к вставке дополнительного элемента. Например, при замене символьного элемента, содержащего символ новой строки, на <img> будут созданы два элемента: один для изображения и один для символа новой строки.
При попытке заменить элемент в позиции длины, скорее всего, получится два элемента. Например, setOuterHTML(getCharacterElement (getLength()),
"blah") создаст в конце два листовых элемента: один будет представлять 'blah', а другой — конечный элемент.
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов setOuterHTML(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
|
<ul>
\
<li>
Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— элемент, который нужно заменить -
htmlText— строка, которую нужно проанализировать и вставить вместоelem - Вызывает исключение:
-
IllegalStateException— если HTMLEditorKit.Parser не задан -
BadLocationException— если замена невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
insertAfterStart
public void insertAfterStart(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов insertAfterStart(elem,
"<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
|
<div>
/ | \
<ul> <p> <p>
/
<li>
В отличие от метода insertBeforeStart, новые элементы становятся дочерними элементами указанного элемента, а не соседними.
Параметр elem не должен быть листовым элементом, иначе будет выброшено исключение IllegalArgumentException. Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— ветвевой элемент, который будет корневым для нового текста -
htmlText— строка, которую нужно проанализировать и назначитьelem - Вызывает исключение:
-
IllegalArgumentException— еслиelemявляется листовым элементом -
IllegalStateException— если для документа не задан HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
insertBeforeEnd
public void insertBeforeEnd(Element elem, String htmlText) throws BadLocationException, IOException
Если дочерние элементы elem являются листовыми и символ в elem.getEndOffset() - 1 — это символ новой строки, вставка будет выполнена перед ним, чтобы после символа новой строки не было текста.
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов insertBeforeEnd(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
|
<div>
/ | \
<p> <p> <ul>
\
<li>
В отличие от метода insertAfterEnd, новые элементы становятся дочерними элементами указанного элемента, а не соседними.
Параметр elem не должен быть листовым элементом, иначе будет выброшено исключение IllegalArgumentException. Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— элемент, который будет корневым для нового текста -
htmlText— строка, которую нужно проанализировать и назначитьelem - Вызывает исключение:
-
IllegalArgumentException— еслиelemявляется листовым элементом -
IllegalStateException— если для документа не задан HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
insertBeforeStart
public void insertBeforeStart(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов insertBeforeStart(elem,
"<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
/ \
<ul> <div>
/ / \
<li> <p> <p>
В отличие от метода insertAfterStart, новые элементы становятся соседними с указанным элементом, а не дочерними.
Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— элемент, перед которым вставляется содержимое -
htmlText— строка, которую нужно проанализировать и вставить передelem - Вызывает исключение:
-
IllegalStateException— если для документа не задан HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
insertAfterEnd
public void insertAfterEnd(Element elem, String htmlText) throws BadLocationException, IOException
Рассмотрим следующую структуру (параметр elem выделен полужирным).
<body>
|
<div>
/ \
<p> <p>
Вызов insertAfterEnd(elem, "<ul><li>") приводит к следующей структуре (новые элементы выделены синим цветом).
<body>
/ \
<div> <ul>
/ \ \
<p> <p> <li>
В отличие от метода insertBeforeEnd, новые элементы становятся соседними с указанным элементом, а не дочерними.
Если параметр elem или htmlText равен null, документ не изменяется.
Для корректной работы у документа должен быть задан HTMLEditorKit.Parser. Это условие выполняется, если документ был создан из HTMLEditorKit с помощью метода createDefaultDocument.
- Параметры:
-
elem— элемент, после которого вставляется содержимое -
htmlText— строка, которую нужно проанализировать и вставить послеelem - Вызывает исключение:
-
IllegalStateException— если для документа не задан HTMLEditorKit.Parser -
BadLocationException— если вставка невозможна из-за проблемы со структурой -
IOException— если возникает исключение ввода-вывода - Появился в версии:
- 1.3
getElement
public Element getElement(String id)
Attribute. Если элемент не найден, возвращается null. Обратите внимание, что этот метод работает с Attribute, а не с символьным тегом. В следующем фрагменте HTML: <a id="HelloThere"> атрибутом является 'id', а символьным тегом — 'a'. Это вспомогательный метод для getElement(RootElement, HTML.Attribute.id, id). Этот метод не является потокобезопасным.- Параметры:
-
id— строка, представляющая требуемыйAttribute - Возвращает:
- элемент с указанным
Attributeилиnull, если он не найден, либоnull, еслиidравенnull - Появился в версии:
- 1.3
- См. также:
getElement
public Element getElement(Element e, Object attribute, Object value)
e, содержащий атрибут attribute со значением value, или null, если такой элемент не найден. Этот метод не является потокобезопасным.- Параметры:
-
e— корневой элемент, от которого начинается поиск -
attribute— требуемыйAttribute -
value— значения указанногоAttribute - Возвращает:
- элемент с указанными
Attributeиvalueилиnull, если он не найден - Появился в версии:
- 1.3
- См. также:
fireChangedUpdate
protected void fireChangedUpdate(DocumentEvent e)
- Переопределяет:
-
fireChangedUpdateв классеAbstractDocument - Параметры:
-
e— событие - См. также:
fireUndoableEditUpdate
protected void fireUndoableEditUpdate(UndoableEditEvent e)
- Переопределяет:
-
fireUndoableEditUpdateв классеAbstractDocument - Параметры:
-
e— событие - См. также:
© 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.desktop/javax/swing/text/html/HTMLDocument.html