Редактировать HTML-документ – Java

Объектная модель документа

Объектная модель документа, или сокращенно DOM, представляет собой стандартный API для межплатформенного программирования, который помогает программистам получать доступ к частям документа и изменять их. DOM определяет структуру документа как дерево с иерархией узлов, где каждый узел представляет часть документа, например элемент, класс, тег, атрибут или текст. Например, каждая часть, такая как изображение или часть текста, называется «узлом». Дерево DOM – это то, как или с какой структурой документ представлен в памяти. Другими словами, объектная модель документа создает логическую структуру документа и определяет объекты, свойства, события и методы для доступа к ним и их изменения.

Редактировать HTML на Java

HTML DOM определяет элементы HTML как объекты, предоставляя набор свойств и методов, которые можно использовать для доступа к ним и управления ими. Каждый элемент в HTML-документе представлен узлом в дереве DOM, и каждый узел имеет собственный набор свойств и методов.

Как мы уже упоминали в статье Создание HTML-документа, реализация HTMLDocument, а также вся модель DOM основаны на стандарте WHATWG DOM. Таким образом, Aspose.HTML легко использовать, имея базовые знания языков HTML и JavaScript. DOM package представлен следующими основными типами данных:

Data typeDescription
DocumentThe Document class represents the entire HTML, XML or SVG document. Conceptually, it is the root of the document tree and provides the primary access to the document’s data.
EventTargetThe EventTarget class is implemented by all Nodes in an implementation that supports the DOM Event Model.
NodeThe Node class is the primary datatype for the entire Document Object Model. It represents a single node in the document tree.
ElementThe element type is based on node and represents a base class for HTML, XML or SVG DOM.
AttrThe Attr class represents an attribute in an Element object. Typically the allowable values for the attribute are defined in a schema associated with the document.

Методы DOM

HTML DOM определяет набор методов, которые можно использовать для доступа и управления всеми элементами HTML. Вы можете использовать эти методы для выполнения различных задач, таких как создание, изменение и удаление элементов, а также управление их свойствами и событиями. Ниже приведен краткий список полезных методов API, предоставляемых основными типами данных:

MethodDescription
document.getElementById(elementId)The method, when invoked, must return the first element whose ID is elementId and null if there is no such element otherwise.
document.getElementsByTagName(name)The method must return the list of elements with the given name.
document.createElement(tagName)The method creates the HTML element specified by tagName, or an HTMLUnknownElement if tagName isn’t recognized.
parentNode.appendChild(node)The method adds a node to the end of the list of children of a specified parent node.
element.setAttribute(name, value)Sets the value of an attribute on the specified element.
element.getAttribute(name)The method returns the value of a specified attribute on the element.
element.innerHTMLReturns a fragment of markup contained within the element.

Существует множество способов редактирования HTML с помощью нашей библиотеки. Вы можете изменить документ, вставив новые узлы, удалив или отредактировав содержимое существующих узлов. Если вам нужно создать новый узел, необходимо вызвать следующие методы:

MethodDescription
document.CreateCDATASection(data)Creates a CDATASection node whose value is the specified string.
document.CreateComment(data)Creates a Comment node given the specified string.
document.CreateDocumentFragment()Creates an empty DocumentFragment object.
document.CreateElement(localName)Creates an element of the type specified.
document.CreateEntityReference(name)Creates an EntityReference object.
document.CreateProcessingInstruction(target, data)Creates an ProcessingInstruction with the specified name and data.
document.CreateTextNode(data)Creates a Text node given the specified string.

После создания новых узлов в DOM есть несколько методов, которые могут помочь вам вставить узлы в дерево. В следующем списке описывается наиболее распространенный способ вставки узлов:

MethodDescription
node.InsertBefore(node, child)Inserts the node before the reference child node
node.AppendChild(node)Adds the node to the list of children of the current node

Чтобы удалить узел из дерева HTML DOM, используйте методы RemoveChild(child) или Remove().

Полный список интерфейсов и методов, представленных в пакете DOM, см. в API Reference Source.

Редактировать дерево документов

В следующем фрагменте кода показано, как редактировать HTML-документ с помощью DOM-дерева и упомянутого выше функционала. Рассмотрим простые шаги по созданию и редактированию HTML. Мы создаем HTML с нуля. Документ будет содержать стилизованный текстовый абзац:

  1. Создайте экземпляр HTML-документа с помощью конструктора HTMLDocument().
  2. Создайте элемент <style> с помощью метода createElement("style").
  3. Вызовите метод setTextContent(), чтобы установить указанное текстовое содержимое в элементе стиля. Текстовое содержимое .gr { color: green } является правилом CSS. Он нацелен на элементы с именем класса «gr» и устанавливает их цвет на зеленый.
  4. Используйте метод getElementsByTagName(name), чтобы найти элемент <head> и добавить элемент стиля в качестве дочернего элемента к элементу заголовка.
  5. Создайте элемент абзаца с именем класса “gr”, используя методы createElement("p") и setClassName("gr").
  6. Создайте текстовый узел и добавьте его как дочерний к элементу <p> – используйте методы createTextNode() и appendChild().
  7. Добавьте абзац в тело документа.
  8. Сохраните документ HTML в файл, используя метод save().
 1// Create an instance of an HTML document
 2com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument();
 3
 4// Create a style element and assign the green color for all elements with class-name equals 'gr'.
 5Element style = document.createElement("style");
 6style.setTextContent(".gr { color: green }");
 7
 8// Find the document header element and append the style element to the header
 9Element head = document.getElementsByTagName("head").get_Item(0);
10head.appendChild(style);
11
12// Create a paragraph element with class-name 'gr'.
13HTMLParagraphElement p = (HTMLParagraphElement) document.createElement("p");
14p.setClassName("gr");
15
16// Create a text node
17Text text = document.createTextNode("Hello, World! I can edit HTML documents!");
18
19// Append the text node to the paragraph
20p.appendChild(text);
21
22// Append the paragraph to the document body element
23document.getBody().appendChild(p);
24
25// Save the HTML document to a file
26document.save("using-dom.html");

Результирующий HTML-файл выглядит следующим образом:

1<html>
2	<head>
3		<style>.gr { color: green; }</style>
4	</head>
5	<body>
6		<p class="gr">Hello, World! I can edit HTML documents!</p>
7	</body>
8</html>

Методы setInnerHTML() и getOuterHTML()

Наличие объектов DOM дает вам мощный инструмент для работы с HTML-документом. Однако иногда гораздо лучше работать только с Class String. В следующем примере показано, как создать HTML-документ с помощью библиотеки Java Aspose.HTML – установить содержимое элемента body и вывести HTML-документ на консоль с помощью методов setInnerHTML() и getOuterHTML():

  1. Создайте экземпляр класса HTMLDocument с помощью конструктора HTMLDocument(). Он создает пустой HTML-документ.
  2. Чтобы вывести исходное содержимое HTML-документа на консоль, используйте метод getOuterHTML(). Вывод будет <html><head></head><body></body></html>, так как изначально документ пуст.
  3. Используйте метод setInnerHTML() для установки содержимого элемента body: добавьте элемент HTML <p> с текстом “Hello, World!!” к элементу тела.
  4. Выведите обновленное содержимое HTML-документа на консоль с помощью метода getOuterHTML(). В результате получится <html><head></head><body><p>Hello, World!!</p></body></html>, поскольку элемент body теперь содержит добавленный абзац.
 1// Create an instance of an HTML document
 2com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument();
 3
 4// Write the content of the HTML document into the console output
 5System.out.println(document.getDocumentElement().getOuterHTML()); // output: <html><head></head><body></body></html>
 6
 7// Set the content of the body element
 8document.getBody().setInnerHTML("<p>Hello, World!!</p>");
 9
10// Write the content of the HTML document into the console output
11System.out.println(document.getDocumentElement().getOuterHTML()); // output: <html><head></head><body><p>Hello, World!!</p></body></html>

Редактировать CSS

Каскадные таблицы стилей (CSS) – это язык таблиц стилей, используемый для описания того, как веб-страницы выглядят в браузере. Aspose.HTML не только поддерживает CSS «из коробки», но также предоставляет инструменты для управления стилями документа «на лету» перед преобразованием HTML-документа в другие форматы.

Когда CSS написан с использованием атрибута стиля внутри тега HTML, это называется «Inline CSS». Встроенный CSS позволяет применять индивидуальный стиль к одному HTML-элементу за раз. Вы устанавливаете CSS для элемента HTML, используя атрибут стиля с любыми свойствами CSS, определенными в нем. В следующем фрагменте кода вы можете увидеть, как указать свойства стиля CSS для элемента HTML <p>:

 1// Create an instance of an HTML document with specified content
 2String content = "<p> Inline CSS </p>";
 3com.aspose.html.HTMLDocument document = new com.aspose.html.HTMLDocument(content, ".");
 4
 5// Find the paragraph element to set a style attribute
 6HTMLElement paragraph = (HTMLElement) document.getElementsByTagName("p").get_Item(0);
 7
 8// Set the style attribute
 9paragraph.setAttribute("style", "font-size: 250%; font-family: verdana; color: #cd66aa");
10
11// Save the HTML document to a file
12document.save("edit-inline-css.html");
13
14// Create the instance of the PDF output device and render the document into this device
15PdfDevice device = new PdfDevice("edit-inline-css.pdf");
16document.renderTo(device);

В этом конкретном примере цвет, размер шрифта и семейство шрифтов применяются к элементу <p>. Фрагмент отрендеренной pdf-страницы выглядит так:

Текст “Inline CSS”

Вы можете скачать полные примеры и файлы данных по адресу GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.