ihtmldocument2 java_HTMLDocument

一个模拟HTML的文档。

此模型的目的是支持浏览和编辑。

因此,默认情况下,HTML文档描述的结构不会完全复制。

默认情况下建模的元素结构由类HTMLDocument.HTMLReader构建,该类实现了解析器所期望的HTMLEditorKit.ParserCallback协议。

要更改结构,可以HTMLReader ,并重新实现方法getReader(int)以返回新的读取器实现。

有关创建的默认结构的详细信息,请参阅HTMLReader的文档。

目的是文档是无损的(尽管再现HTML格式可能导致不同的格式)。

该文档仅模拟HTML,并且不会尝试在其中存储视图属性。 元素由StyleContext.NameAttribute属性标识,该属性应始终具有标识元素类型的类型HTML.Tag的值。 一些元素(例如注释)被合成。 HTMLFactory使用此属性来确定要构建的视图类型。

本文档支持增量加载。 TokenThreshold属性控制在尝试更新文档的元素结构之前缓冲了多少解析。 此属性由EditorKit设置,以便子类可以禁用它。

Base属性确定用于解析相对URL的URL。 默认情况下,如果属性的值是URL, Document.StreamDescriptionProperty 。 如果遇到标记,则base将成为该标记指定的URL。 因为基本URL是属性,所以它当然可以直接设置。

此文档的默认内容存储机制是间隙缓冲区( GapContent )。 可以使用实现Content的构造函数来提供替代Content 。

修改HTMLDocument

除了Document和StyledDocument提供的用于改变HTMLDocument的方法之外,HTMLDocument还提供了许多便利方法。 可以使用以下方法将HTML内容插入现有文档。

以下示例说明了使用这些方法。 每个示例都假定HTML文档按以下方式初始化:

JEditorPane p = new JEditorPane();

p.setContentType("text/html");

p.setText("..."); // Document text is provided below.

HTMLDocument d = (HTMLDocument) p.getDocument();

使用以下HTML内容:

An example HTMLDocument

div { background-color: silver; }

ul { color: blue; }

Paragraph 1

Paragraph 2

修改HTML文档的所有方法都需要Element 。 它以深度优先顺序返回包含具有给定值的指定属性的第一个后代元素。 例如, d.getElement(d.getDefaultRootElement(), StyleConstants.NameAttribute, HTML.Tag.P)返回第一个段落元素。

返回其ID属性与指定值匹配的元素。 例如, d.getElement("BOX")返回DIV元素。

getIterator(HTML.Tag t)方法还可用于查找文档中所有出现的指定HTML标记。

插入元素

可以使用方法insertAfterStart和insertBeforeEnd在任何非叶元素的现有子元素之前或之后插入元素。 例如,如果e是DIV元素,则d.insertAfterStart(e, "

  • List Item
")在第一个段落之前插入列表, d.insertBeforeEnd(e, "
  • List Item
")在最后一个段落之后插入列表。 DIV块成为新插入元素的父级。

可以使用方法insertBeforeStart和insertAfterEnd在任何元素之前或之后插入兄弟元素。 例如,如果e是DIV元件, d.insertBeforeStart(e, "

  • List Item
")所述前插入物的列表DIV元件,和d.insertAfterEnd(e, "
  • List Item
")插入后的列表DIV元件。 新插入的元素成为DIV元素的兄弟元素。

替换元素

可以使用方法setInnerHTML和setOuterHTML替换元素及其所有后代。 例如,如果e是DIV元素,则d.setInnerHTML(e, "

  • List Item
")将所有子段落替换为列表, d.setOuterHTML(e, "
  • List Item
")将替换DIV元素本身。 在后一种情况下,列表的父级是BODY元素。

摘要

下表显示了示例文档和上述各种方法的结果。

HTML Content of example above Example insertAfterStart insertBeforeEnd insertBeforeStart insertAfterEnd setInnerHTML setOuterHTML

Paragraph 1

Paragraph 2

List Item

Paragraph 1

Paragraph 2

Paragraph 1

Paragraph 2

List Item

List Item

Paragraph 1

Paragraph 2

Paragraph 1

Paragraph 2

List Item

List Item

List Item

警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有JavaBeans java.beans长期存储的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值