Что такое DOM?
DOM или Объектная модель документа (англ. Document Object Model - DOM ) определяет стандарт доступа к документам и управления ими:
W3C объектная модель документа (DOM) - это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам динамически получить доступ к содержимому документов, а также изменять их содержимое, структуру и оформление.
HTML DOM определяет стандартный способ доступа к HTML-документам и управления ими. Он представляет HTML-документ в виде древовидной структуры.
XML DOM определяет стандартный способ доступа к XML-документам и управления ими. Он представляет XML-документ в виде древовидной структуры.
Понимание DOM является обязательным для всех, кто работает с HTML или XML.
HTML DOM
Доступ ко всем элементам HTML можно получить через HTML DOM.
В следующем примере изменяется значение элемента HTML с id="demo":
<h1 id="demo">Это заголовок</h1>
<script>
document.getElementById("demo").innerHTML = "Привет, мир!";
</script>
В следующем примере изменяется значение первого элемента <h1> в документе HTML:
<h1>Это заголовок</h1>
<h1>И это заголовок</h1>
<script>
document.getElementsByTagName("h1")[0].innerHTML = "Привет, мир!";
</script>
Примечание: Даже если документ HTML содержит только ОДИН элемент <h1>, вам все равно необходимо указать индекс массива [0], потому что метод getElementsByTagName() всегда возвращает массив.
Подробнее о HTML DOM вы можете узнать в нашем учебнике по JavaScript.
XML DOM
Доступ ко всем элементам XML можно получить через XML DOM.
XML DOM это
- Стандартная объектная модель для XML
- Стандартный интерфейс программирования для XML
- Независимость от платформы и языка
- Стандарт W3C
Другими словами: XML DOM - это стандарт того, как получать, изменять, добавлять или удалять элементы XML.
Как получить значение XML элемента
Следующий код извлекает текстовое значение первого элемента <title> в XML-документе:
txt = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
Загрузка XML файла
В приведенных ниже примерах используется XML-файл books.xml.
В следующем примере загружается файл "books.xml" в объект xmlDoc и извлекается текстовое значение первого элемента <title> в books.xml:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
}
</script>
</body>
</html>
Объяснение примера:
- xmlDoc - объект XML DOM, созданный парсером.
- getElementsByTagName("title")[0] - получить первый элемент <title>
- childNodes[0] - первый потомок элемента <title> (текстовый узел)
- nodeValue - значение узла (сам текст)
Загрузка строки XML
В следующем примере загружается текстовая строка в объект XML DOM и затем при помощи JavaScript извлекаются из него нужные данные:
<html>
<body>
<p id="demo"></p>
<script>
var text, parser, xmlDoc;
text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>
</body>
</html>
Интерфейс программирования
DOM моделирует XML как набор узловых объектов. Доступ к узлам можно получить с помощью JavaScript или других языков программирования. В этом учебнике используется JavaScript.
Программный интерфейс DOM определяется набором стандартных свойств и методов.
Свойства - это значения, которые вы можете устанавливать или изменять (например, nodename - "книга").
Методы - это некие действия, которые могут выполняться (например, удаление "книги").
Свойства XML DOM
Существует ряд типичных свойств DOM:
- x.nodeName – имя "x"
- x.nodeValue – значение "x"
- x.parentNode – родительский узел "x"
- x.childNodes – дочерние узлы "x"
- x.attributes – атрибуты "x"
Примечание: В приведенном выше списке "x" — узловой объект.
Методы XML DOM
- x.getElementsByTagName(имя) – получает все элементы с заданным именем тега
- x.appendChild(узел) – вставляет дочерний узел в "x"
- x.removeChild(узел) – удаляет дочерний узел из "x"
Примечание: В приведенном выше списке "x" — узловой объект.
- XML DOM - Узлы
- XML DOM - Доступ к узлам
- XML DOM - Информация об узле
- XML DOM - Список узлов
- XML DOM - Обход дерева узлов
- XML DOM - Навигация по узлам
- XML DOM - Получение значения узла
- XML DOM - Изменение значения узла
- XML DOM - Удаление узлов
- XML DOM - Замена узлов
- XML DOM - Создание узлов
- XML DOM - Добавление узлов
- XML DOM - Клонирование узлов