DOM Document Object Model - объектная модель документа

Содержание

Слайд 2

Типы узлов DOM

Типы узлов DOM

Слайд 3

Дерево DOM DOM создает в памяти древовидную версию документа из XML-источника данных

Дерево DOM

DOM создает в памяти древовидную версию документа из XML-источника данных

Слайд 4

Класс domNode Корневым классом для всех DOM-объектов является класс domNode (узел).

Класс domNode

Корневым классом для всех DOM-объектов является класс domNode (узел). Все

остальные классы узлов, определенные в стандарте DOM, являются подклассами этого класса.
Методы класса domNode:
nodeType — определение типа узла;
tagName — имя элемента, name — имя атрибута ;
nodeValue — значение узла;
Слайд 5

Класс domNode parentNode — предок контекстного узла: $node -> parentNode ->

Класс domNode

parentNode — предок контекстного узла:
$node -> parentNode -> tagName;
firstChild —

первый дочерний узел:
$node -> firstChild -> tagName;
lastChild — последний дочерний узел:
$node -> lastChild -> tagName;
previousSibling — узел, предыдущий контекстному в иерархии предка:
$node -> previousSibling -> tagName;
nextSibling — узел, следующий за контекстным в иерархии предка:
$node -> nextSibling -> tagName
Слайд 6

Создание объекта DOM PHP — модуль DOM XML, класс DOMDocument $dom

Создание объекта DOM
PHP — модуль DOM XML, класс DOMDocument
$dom = new

DOMDocument ();
$dom = new DOMDocument ('1.0');
Слайд 7

Загрузка документа в DOM Свойства класса DomDocument : PreserveWhiteSpace — определяет

Загрузка документа в DOM

Свойства класса DomDocument :
PreserveWhiteSpace — определяет режим обработки

пустых текстовых полей (указание не убирать лишние пробелы и отступы. По умолчанию TRUE).
$dom = new domDocument ();
$dom->preserveWhiteSpace=false;
$dom->load('goods.xml') ;
$root = $dom->documentElement;
echo $root->childNodes->length;
ValidateOnParse — позволяет во время чтения XML-файла проверять его корректность на основе документов, описывающих схему анализируемого XML-документа. (загружает DTD и проверяет документ на соответствие. По умолчанию FALSE).
Слайд 8

Класс domNode Свойства класса DomDocument : ResolveExternals — разрешает при вводе

Класс domNode

Свойства класса DomDocument :
ResolveExternals — разрешает при вводе XML-файла подключать

указанные в данном файле внешние XML-документы. (Применяется при включении элементов с символьными данными в XML документ. По умолчанию FALSE.)
FormatOutput — формируется XML-документ с отступами и дополнительными пробелами.
Doctype — указатель на описатель DocType документа. Представляет описатель XML-документа. Узел domDocumentType не имеет дочерних элементов, но содержит два свойства: ENTITYи NOTATION, представляющих описатели.
DocumentEiement — указатель на корневой элемент документа.
Слайд 9

Загрузка документа в DOM Варианты: Загрузка из файла Загрузка из строки

Загрузка документа в DOM

Варианты:
Загрузка из файла
Загрузка из строки
Загрузка из потока
Методы класса

DomDocument :
Load()
LoadXML()
Save()
saveXML ()
Слайд 10

Загрузка документа в DOM. Класс domDocument $UsersInfoXML = " nagibator qwerty

Загрузка документа в DOM. Класс domDocument

$UsersInfoXML = "nagibator qwertysimeon@pochta.ru10.12.2007 10.12.2007admin 1";


$dom -> loadXML ($UsersInfoXML);
$dom -> saveXML ($UsersInfoXML);
$dom -> load("UsersInfo.xml");
$dom->save('UsersInfo.xml');
Слайд 11

Создание узлов DOM. Класс domDocument Этапы: Определить, что должно быть добавлено

Создание узлов DOM. Класс domDocument

Этапы:
Определить, что должно быть добавлено в дерево, и

создать соответствующий новый узел
Указать, куда в дереве должен быть помещен новый узел, и выполнить добавление узла
Методы объекта domDocument
create­Element — создание элемента;
createAttribute — создание атрибута;
createTextNode — создание текстового узла;
create­CDATA­Section — создание секции CDATA;
сreateComment — создание комментария;
createProcessingInstruction—узел инструкции по обработке, содержащий; указанного целевого объекта и данных.
Расположение нового узла в дереве:
appendChild —  добавление нового дочернего узла в конец списка потомков;
setAttribute — добавление нового атрибута;
insertBefore — добавление нового дочернего узла перед опорным узлом.
Слайд 12

Создание узлов DOM с помощью PHP createProcessingInstruction: $user = $dom ->

Создание узлов DOM с помощью PHP

createProcessingInstruction:
$user = $dom -> createProcessingInstruction
("xml",

"version = '1.0' encoding = 'windows-1251'");
сreateElement:
$user = $dom->createElement('user');
сreateAttribute:
$login = $dom -> createAttribute ("login");
$login -> Value = "Ivanov";
setAttribute:
$user-> setAttribute (“id", "Ivanov");
appendChild
$users -> appendChild ($user);
insertBefore
$users -> insertBefore ($id, $user);
Слайд 13

Создание узлов DOM с помощью PHP $dom = new DOMDocument(); $DocumentNode

Создание узлов DOM с помощью PHP

$dom = new DOMDocument();
$DocumentNode =

$dom->createElement('users');
$dom->appendChild($DocumentNode);
$elementNode = $dom->createElement('user');
$DocumentNode->appendChild($elementNode);
$attrNode = $dom->createAttribute('id');
$elementNode->setAttributeNode($attrNode);
$textNode = $dom->createTextNode('1');
$attrNode->appendChild($textNode);
$dom->formatOutput = true;
$dom->save('Users.xml');
Слайд 14

Создание узлов DOM с помощью PHP $dom = new DomDocument(); $users=

Создание узлов DOM с помощью PHP

$dom = new DomDocument();
$users= $dom->appendChild($dom->createElement('users'));


$user = $users->appendChild($dom->createElement('user'));
$login = $user->appendChild($dom->createElement('login', 'Ivanov!'));
$pass = $user->appendChild($dom->createElement('pass', '12345'));
$name = $user->appendChild($dom->createElement('name'));
$firstname = $name->appendChild($dom->createElement('firstname', 'Иван'));
$secondname = $name->appendChild($dom->createElement('secondname', 'Иванов!'));
$lastname = $name->appendChild($dom->createElement('lastname', 'Иванович'));
$email = $user->appendChild($dom->createElement('email', 'Ivanov@gmail.com'));
$dateRegistration= $user->appendChild($dom->createElement('dateRegistration', '30.11.2016'));
$dateLastVisit= $user->appendChild($dom->createElement('dateLastVisit', '30.11.2016'));
$type= $user->appendChild($dom->createElement('type', 'user'));
$isBlocked= $user->appendChild($dom->createElement('isBlocked', '0'));
$dom->formatOutput = true;
$UserRegistration = $dom->saveXML();
$dom->save('UserRegistration.xml');
Слайд 15

Создание узлов DOM с помощью PHP Контактная информация login pass firstname lastname email dateRegistration

Создание узлов DOM с помощью PHP


Контактная информация














Слайд 16

Создание узлов DOM с помощью PHP $dom = new DomDocument(); $users=

Создание узлов DOM с помощью PHP

$dom = new DomDocument();
$users= $dom->appendChild($dom->createElement('users'));


$user = $users->appendChild($dom->createElement('user'));
$login = $user->appendChild($dom->createElement('login', ''.$_POST['login'].''));
$pass = $user->appendChild($dom->createElement('pass', ''.$_POST['pass'].''));
$name = $user->appendChild($dom->createElement('name'));
$firstname = $name->appendChild($dom->createElement('firstname', ''.$_POST['firstname'].''));
$secondname = $name->appendChild($dom->createElement('secondname', ''.$_POST['secondname'].''));
$lastname = $name->appendChild($dom->createElement('lastname', ''.$_POST['lastname'].''));
$email = $user->appendChild($dom->createElement('email', ''.$_POST['email'].''));
$dateRegistration= $user->appendChild($dom->createElement('dateRegistration', '30.11.2016'));
$dateLastVisit= $user->appendChild($dom->createElement('dateLastVisit', '30.11.2016'));
$type= $user->appendChild($dom->createElement('type', 'user'));
$isBlocked= $user->appendChild($dom->createElement('isBlocked', '0'));
$dom->formatOutput = true;
$UserRegistration = $dom->saveXML();
$dom->save('UserRegistration.xml');
Слайд 17

Корректировка узлов DOM. Класс NodeList Класс NodeList предоставляет доступ к упорядоченному

Корректировка узлов DOM. Класс NodeList
Класс NodeList предоставляет доступ к упорядоченному списку

узлов документа.
Свойства:
length — Количество узлов (от 0 до length–1 включительно).
Методы:
hasChildNodes — возвращение значения true, если узел имеет дочерние элементы, и false - в противном случае.
appendChild — добавление нового дочернего узла в конец списка потомков.
insertBefore — добавление нового дочернего узла перед опорным узлом.
replaceChiId — замена дочернего узла на новый узел.
removeChiId — удаление узла из списка дочерних узлов.
importNode — импорт узла в текущий документ. (если параметр deep имеет значение true, копируются и все дочерние узлы).
getElementsByTagName — возвращают список элементов, имеющих искомое имя узла.
item — возвращение узла с указанным номером. Первый узел имеет номер 0. Последний — length-1.
Слайд 18

Корректировка узлов DOM. Класс NodeList hasChildNodes: $dom = new DomDocument('1.0'); $dom->load('order.xml');

Корректировка узлов DOM. Класс NodeList

hasChildNodes:
$dom = new DomDocument('1.0');
$dom->load('order.xml');
$node = $dom->getElementsByTagName("order")->item(0);
if

($node->hasChildNodes()) {
echo $node->nodeValue; }
insertBefore:
$dom = new DomDocument;
$dom->load('order.xml');
$node = $dom->getElementsByTagName("order")->item(0);
$id = $node->insertBefore($dom->createElement('id', "Ivanov"), $dom->getElementsByTagName("goodsList")->item(0) );
$dom->save('order.xml');
item:
$dom = new DomDocument;
$dom->load('order.xml');
echo $dom->getElementsByTagName("order")->item(1)->nodeValue;
Слайд 19

Удаление узлов DOM removeChild: $dom = new DOMDocument; $dom->load('UserRegistration.xml'); $users =

Удаление узлов DOM

removeChild:
$dom = new DOMDocument;
$dom->load('UserRegistration.xml');
$users = $dom->documentElement;
$user = $users->getElementsByTagName('user')->item(0);
$users2 =

$users->removeChild($user);
echo $dom->save(‘UserRegistration.xml');
removeAttribute:
$dom = new DOMDocument;
$dom->load('UserRegistration.xml');
$users = $dom->documentElement;
$user = $users->getElementsByTagName('user')->item(0);
$isBlocked = $user -> getAttributeNode ("isBlocked");
$user -> removeAttributeNode ($isBlocked);
echo $dom->save('UserRegistration.xml');
Слайд 20

Удаление узлов DOM echo ' '; if ($_POST['submit']) { $dom =

Удаление узлов DOM
echo '



';
if ($_POST['submit']) {
$dom = new DOMDocument;
$dom->load('goods.xml');
$xpath_item_XML = new DOMXPath($dom);
foreach ($xpath_item_XML ->query('//item[id="0145"]') as $node){
$usersDel = $dom->documentElement->removeChild($node);
}
echo $dom->save('goods.xml');
}
Слайд 21

XPath-адресация PHP-класс DOMXPath: $xpath = new DOMXPath ($dom); Свойство: Document —

XPath-адресация

PHP-класс DOMXPath:
$xpath = new DOMXPath ($dom);
Свойство:
Document — хранение ссылки на анализируемый

документ
Методы:
query —поиск в документе узлов, удовлетворяющих условию, заданному в строке Xpath.
evaluate — поиск в документе узлов, удовлетворяющих условию, заданному в строке Xpath (возвращает текстовый результат)
Слайд 22

XPath-адресация $dom = new DOMDocument(); $dom -> load (“User.xml"); $user='Ivanov'; $number

XPath-адресация

$dom = new DOMDocument();
$dom -> load (“User.xml");
$user='Ivanov';
$number = 0;

$elements = $dom->getElementsByTagName("login");
foreach ($elements as $element) {
if ($element->nodeValue == $user) {
$number++;
}
}
echo $number;
Слайд 23

XPath-адресация $dom = new DOMDocument(); $dom -> load (“User.xml"); $dom->preserveWhiteSpace=false; $xpath

XPath-адресация

$dom = new DOMDocument();
$dom -> load (“User.xml");
$dom->preserveWhiteSpace=false;
$xpath = new

DOMXPath($dom);
$result = $xpath->query("//user[login='Ivan']");
echo $result->length;
$dom = new DOMDocument();
$dom -> load ("test1.xml");
$dom->preserveWhiteSpace=false;
$xpath = new DOMXPath($dom);
echo $xpath->evaluate("count(//user[login='Ivan'])");