Advertisement
serg78ant

XML в PHP

Dec 16th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.05 KB | None | 0 0
  1. <!-- Создание XML-строки и XML-документ при помощи DOM -->
  2.  
  3. <?
  4. $dom = new DomDocument('1.0', 'utf-8');
  5.  
  6. //добавление корня - <books>
  7. $books = $dom->appendChild($dom->createElement('books'));
  8.  
  9. //добавление элемента <book> в <books>
  10. $book = $books->appendChild($dom->createElement('book'));
  11.  
  12. // добавление элемента <title> в <book>
  13. $title = $book->appendChild($dom->createElement('title'));
  14.  
  15. // добавление элемента текстового узла в <title>
  16. $title->appendChild($dom->createTextNode('Great American Novel'));
  17.  
  18. // форматирование для читабильности: установка атрибута formatOutput domDocument в значение true
  19. $dom->formatOutput = true;
  20.  
  21. // сохранение XML в виде строки
  22. $string = $dom->saveXML();
  23.  
  24. // сохранение XML в файла
  25. $dom->save('result1.xml');
  26. ?>
  27.  
  28.  
  29.  
  30. <!-- Импортируем объект SimpleXMLElement в объект DOMElement -->
  31.  
  32. <?
  33. // интерпретируем XML-строку в обьект SimpleXMLElement
  34. $sxe = simplexml_load_string('<books><book><title>Great American Novel</title></book></books>');
  35.  
  36. if ($sxe === false) {
  37.   echo 'Error while parsing the document';
  38.   exit;
  39. }
  40.  
  41. // получаем объект DOMElement из объекта SimpleXMLElement
  42. $dom_sxe = dom_import_simplexml($sxe);
  43.  
  44. if ($dom_sxe === false) {
  45.   echo 'Error while converting XML';
  46.   exit;
  47. }
  48.  
  49. $dom = new DOMDocument('1.0');
  50.  
  51. // импортируемый узел с вложенными элементами (т.е. все дерево узла)
  52. $dom_sxe = $dom->importNode($dom_sxe, true);
  53.  
  54. // добавление элемента текстового узла в <title>
  55. $dom_sxe = $dom->appendChild($dom_sxe);
  56.  
  57. // сохранение XML в файла и вывод на экран его размера (в байтах)
  58. echo $dom->save('result2.xml');
  59. ?>
  60.  
  61.  
  62.  
  63. <!-- Импортируем объект DOMElement в объект SimpleXMLElement -->
  64.  
  65. <?
  66. $dom = new domDocument;
  67.  
  68. $dom->loadXML('<books><book><title>Great American Novel</title></book></books>');
  69.  
  70. if (!$dom) {
  71.    echo 'Error while parsing the document';
  72.    exit;
  73. }
  74.  
  75. $s = simplexml_import_dom($dom);
  76.  
  77. echo $s->book[0]->title; // Great American Novel
  78. ?>
  79.  
  80.  
  81.  
  82. <!-- Из XML-файла извлекается элемент -->
  83.  
  84. <?php
  85. include 'example.php';
  86.  
  87. $xml = new SimpleXMLElement($xmlstr);
  88.  
  89. echo $xml->book[0]->plot; // "Cliff meets Lovely Woman. ..."
  90. ?>
  91.  
  92.  
  93.  
  94. <!-- Из XML-файла извлекается несколько экземпляров элемента -->
  95.  
  96. <?
  97. include 'example.php';
  98.  
  99. $xml = new SimpleXMLElement($xmlstr);
  100.  
  101. foreach ($xml->book as $book) {
  102.   echo $book->plot, '<br />';
  103. }
  104. ?>
  105.  
  106.  
  107.  
  108. <!-- Обращение SimpleXML к атрибутам элемента -->
  109.  
  110. <?
  111. //Повторяем входной XML-файл повторяется для наглядности  
  112. $xmlstr = <<<XML
  113. <?xml version='1.0' standalone='yes'?>
  114. <books>
  115.   <book>
  116.    <title>Great American Novel</title>
  117.    <characters>
  118.     <character>
  119.      <name>Cliff</name>
  120.      <desc>really great guy</desc>
  121.     </character>
  122.     <character>
  123.      <name>Lovely Woman</name>
  124.      <desc>matchless beauty</desc>
  125.     </character>
  126.     <character>
  127.      <name>Loyal Dog</name>
  128.      <desc>sleepy</desc>
  129.     </character>
  130.    </characters>
  131.    <plot>
  132.     Cliff meets Lovely Woman.  Loyal Dog sleeps, but wakes up to bark
  133.     at mailman.
  134.    </plot>
  135.    <success type="bestseller">4</success>
  136.    <success type="bookclubs">9</success>
  137.   </book>
  138.  </books>
  139. XML;
  140. ?>
  141.  
  142. <?
  143. include 'example.php';
  144.  
  145. $xml = new SimpleXMLElement($xmlstr);
  146.  
  147. foreach ($xml->book[0]->success as $success) {
  148.    switch((string) $success['type']) { // с преобразованием в строку при помощи оператора (string), т.к. РНР рассматривает элемент как объект
  149.     case 'bestseller':
  150.         echo $success, ' months on bestseller list';
  151.         break;
  152.     case 'bookclubs':
  153.         echo $success, ' bookclub listings';
  154.         break;
  155.     }
  156. }
  157. ?>
  158.  
  159.  
  160.  
  161. <!-- Изменение текстового узла с помощью SimpleXML -->
  162.  
  163. <?
  164. include 'example.php';
  165.  
  166. $xml = new SimpleXMLElement($xmlstr);
  167.  
  168. $xml->book[0]->characters->character[0]->name = 'Big Cliff';
  169.  
  170. echo $xml->asXML(); // возвращает сформированный XML документ в виде строки используя SimpleXML элемент
  171. ?>
  172.  
  173.  
  174.  
  175. <!-- Добавление дочерних и текстовых узлов с помощью SimpleXML -->
  176.  
  177. <?
  178. include 'example.php';
  179.  
  180. $xml = new SimpleXMLElement($xmlstr);
  181.  
  182. $character = $xml->book[0]->characters->addChild('character');
  183. $character->addChild('name', 'Yellow Cat');
  184. $character->addChild('desc', 'aloof');
  185.  
  186. $success = $xml->book[0]->addChild('success', '2');
  187. $success->addAttribute('type', 'reprints');
  188.  
  189. echo $xml->asXML();
  190. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement