Учебник по основам PHP. PHPBeginner

       

DOM XML


Функции доступны при компиляции с параметром —with-dom= [DIR]при использовании библиотеки GNOME xml (не ниже libxml-2.0.0). < /FONT>

Модуль определяет следующие константы (типы элементов 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(): < /FONT >

      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) < /FONT

      >

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

      <?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)

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


      Содержание раздела