Информационные технологииStfw.Ru 🔍

DOM XML

Комплексная обработка данных
🕛 01.11.2006, 15:33
Функции доступны при компиляции с параметром -with-dom=[DIR] при использовании библиотеки GNOME xml (не ниже libxml-2.0.0).

Модуль определяет следующие константы (типы элементов XML):

XML_ELEMENT_NODE;
XML_ATTRIBUTE_NODE;
XML_TEXT_NOOE;
XML_CDATA_SECTION_NODE;
XML_ENTITY_REF_NODE;
XMLJNTITYJODE;
XML_PI_NODE;
XML_COMMENT_NODE;
XiCJDOCUMENTJODE;
XML_DOCUMENT_TYPE_NODE;
XML_DOCUMENT_FRA6_NODE;
XMLJOTATIONJODE;
XML_GLOBAL_NAMESPACE;
XML_LOCAL_NAMESPACE.
Модуль использует следующие классы для работы с интерфейсом DOM документов XML: DomDocument, DomNode, Dtd, DomAttribute, Dom-Namespace, XpathContext, XpathObject.

Рекомендуется использовать объектный интерфейс, но возможно использование и функции с префиксом domxml_, как аналога методов DOM объектов.

Класс DomDocument:

метод root() - аналог domxml_root();
метод children() - аналог domxml_children();
метод add_root() - аналог domxm1_add_root();
метод dtd() - аналог domxml_intdtd();
метод dumpmem() - аналог domxmU);
метод xpath_init() - аналог xpath_init();
метод xpath_new_context() - аналог xpath_new_context();
метод xptr_new_context() - аналог xptr_new_context();
свойство doc - сам объект класса DomDocument;
свойство name - наименование документа;
свойство url - адрес документа;
свойство version - версия XML;
свойство encoding - название кодировки;
свойство standalone - 1, если файл одиночный;
свойство type - см. список констант;
свойство compression - 1, если файл сжатый;
свойство charset - номер кодировки.
Класс DomNode:
метод lastchild() - аналог domxmljast_child{);
метод children() - аналог domxmljrhildren();
метод parent() - аналог domxml_parent();
метод new_child() - аналог domxml_new_child();
метод get_attribute() - аналог domxml_get_attribute();
метод set_attribute() - аналог domxml_set_attribute();
метод attributes() - аналог domxml_attributes();
метод node() - аналог domxml_node();
метод set_content() - аналог domxml_set_contentО;
свойство node - сам обьект класса DomNode;
свойство type - см. список констант;
свойство name - строка, содержащая имя тега;
свойство content - строка содержимого тега.
<?php $doc - new_xmldoc("l 0"); // DomDocument
Sroot = $doc->add_root;"HTML"). // DomNode
Shead - $root->new_child("HFAD". "");
$head->new_child("TITLE". "Hier der Titel"):
echo $doc->dumpmem(); ?>

Сценарий выводит следующее:

<?xml version="l 0"?>
<HTML><HEAD><TITLE>Hier der Titel
</TITLE></HEAD></HTML>

new_xmldoc

Создание нового документа DOM XML

object new_xmldoc (string version)

Возвращает объект класса DomDocument. Синоним функции domxml_new_xmldoc().

xmldoc

Создание DOM-объекта из документа XML

object xmldoc (string strXML)

Интерпретирует строку, содержащую документ XML, и возвращает объект класса DomDocument.

xmldocfile

Создание DOM-объекта из файла XML

object xmldocfile (string XMLfilename)

Интерпретирует файл, содержащий документ XML, и возвращает объект класса DomDocument.

xmltree

Создание дерева объектов PHP из документа XML

object xmltree (string strXML)

$sXML='<?xml version="l 0"?>
<HTML><HEAD Language="ge">
<TITLE>Title OF DOC</TITLE></HEAD></HTML>':
var_dump(xmltree($sXMD);

Будет выведено следующее:

object(0om0ocument)(5) {
["version"]=> stnng(3) "1.0" ["standalone"]=> int(-l)
["type"]=> int(9) XML_DOCUMENT_NODE
["children"]=> array(l) {
[0]=> &object(DomNode)(5) { ["name"]=>
stnng(4) "HTML" ["type"]=> int(l) ["content"]=>
string(12) "Title OF DOC" ["node"]=>
resource(6) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=>
int(l) ["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(7) of type (domxml node) t"attnbutes"]=> array(l) {
[0]=> object(DomAttnbute)(2) {
["name"]=> string(8) "Language" ["children"]=>array(D {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=> int(3) ["content"]=>
stnng(2) "ge" ["node"]=>resource(8) of type
(domxml node) ["children"]=> array(l) {
[0]=> object(DomNode)(5) {
["name"]=> stnng(5) "TITLE" ["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC"
["node">> resourceO) of type (domxml node)
["children"]=> array(l) {
[0]=> object(DomNode)(4) { ["name"]=>
stnng(4) "text" C"type"]=> int(3) ["content"]=>
string(12) "Title OF DOC" ["node"]» resource(lO)
of type (domxml node) ["root"]=>&object(DomNode)(5) {
["name"]=> stnng(4) "HTML"["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC"
["node"]=> resource(6) of type (domxml node)
["children"]=> array(l) { tO]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=> int(l)
["content"]=> string(12) "Title OF DOC"
["node"]=> resource(7) of type (domxml node)
["attributes"]=> array(l) { [0]=> object(DomAttnbute)(2) {
["name"]=> string(8) "Language" ["children"]=>array(D {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=>int(3)
["content"]=> string(2) "ge" ["node"]=>
resource(8) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode) (5) {
["name"]=> string(5) "TITLE" ["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(9) of type (domxml node) ["children"]=> array(l) {
[0]=? object(DomNode)(4) { ["name"]=> stnng(4)
"text" C"type"]=> int(3) ["content"]=> stnng(12)
"Title OF DOC" ["node"]=> resource(lO)
of type (domxml node)

Интерфейс DOM

domxml_root

Получение корневого элемента документа XML

object domxml_root (resource DomDocument)

Возвращает объект класса DomNode.

if($dom = xmldoc($xmlstr)) $root = $dom->root():

domxml_add_root

Создание корневого элемента DOM XML

resource domxml_add_root (resource DomDocument. string name)

Возвращает объект класса DomNode, созданный внутри объекта DomDocument.

domxml_dumpmem

Создание XML документа из объекта DOM

string domxml_dumpmem (resource DomDocument)

Возвращает текстовое представление документа.

domxml_children

Получение массива вложенных объектов раздела

array domxml_crri1dren (object node)

Возвращает массив дочерних объектов объекта класса DomNode.

$doc = new_xmldoc("1.0"): // DomDocument
$root = $doc->add_root("ML").
// DomNode <ML></ML> $root->new_child("Hl". "1212");
// <H1>1212</H1>
$p=$root->new_child("Pp". "Tttt tt");
// <Pp>Tttt tt</Pp> $p->set_attnbute("Id"."8")
// <Pp Id="8"> echo $doc->dumpmem();
$d=domxml_children($doc->root()); // Sroot. <ML></ML>
var_dump($d);
$d=domxml_children($d[l]). // <Pp Id="8">Tttt tt</Pp>
varjJump($d); // "Tttt tt" $d=domxml_children($d[0]);
// = bool(FALSE)

Пример выводит следующее:

<?xml version="l 0"?> <ML>
<Hl>1212</Hl><Pp Id="8">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomNode)(4) {
["name"]=> stnng(2) "HI"
["content"]=> stnng(4) "1212"
t"node"]=> resource(6) of type (domxml node)
["type"]=> int(l) )
[!]=> object(DomNode)(4) { ["name"]=> stnng(2) "Pp"
["content"]=> stnng(7) "Tttt tt"
["node"]=> resource(7) of type (domxml node)
["type"]=> int(l) } }
arr-ay(l) { [0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["content"]=> stnng(7) "Tttt tt"
["node"]=> resource(8)
of type (domxml node) ["type"]-> int(3) } }

domxml_new_child

Создание секции тега

resource domxml_new_chiId (string name, string content)

Возвращает объект класса DomNode, созданный внутри объекта Oom-Node.

domxml_ attributes

Получение атрибутов узла

array domxml_attributes (resource node)

Возвращает объект класса DomDocuraent.

$doc = new_xmldoc("1.0"):
// OomDocument Sroot = $doc->add_root("ML");
// DomNode $h=$root->new_child("Hl". "1212"):
Sp-Sroot^newj^ildC'Pp'1! "Tttt tt"): $p->
set_attnbute("Id"."8"). $p->set_attnbute("Bold"."").
echo $doc->dumpmem(); var_dump($p->attributes()):
var_dump($h->attnbutes()): // var_dump($p->getattr("Id")):

Пример выведет следующее:

<?xml version="1.0"?> <ML><Hl>1212</Hl>
<Pp Id="8" Bold="">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomAttnbute)(2)
{ ["name"]=> string(2) "Id" ["children"]=> array(l) {
[0]=> object(DomNode)(4) { ["name"]=> stnng(4)
"text" ["type"]=> int(3) ["content"J=> stnng(l)
"8" ["node"]=> resource(S) of type (domxml node)
[!]=> object(DomAttnbute)d) {
["name"]=> stnng(4) "Bold" } }
booHFALSE) stnng(I) "8"

domxml_getattr

Получение атрибута узла

object domxml_getattr (resource node, string name)

Возвращает значение атрибута узла. В документации функция почему-то значится под именем domxml_get_attribute(). См. пример выше.

domxml_set_attribute

Установка атрибута узла

object domxml_set_attribute (resource node, string name, string value)

См. пример выше. Имена атрибутов учитывают регистр символов.

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉