Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Разбор XML
Форумы портала PHP.SU » » XML и его обработка » Разбор XML

Страниц (1): [1]
 

1. Panoptik - 15 Ноября, 2011 - 22:29:11 - перейти к сообщению
Доброго всем!

Возникла необходимость в использовании XML, прошелся по форумам, нашел кучи мануалов, но искать соль в горах инфы тяжело.
Вобщем создал неким образом XML:
PHP:
скопировать код в буфер обмена
  1.  
  2. $xml = new DOMDocument('1.0','utf-8');  // DOM document
  3.     $galery = $xml->appendChild($xml->createElement('galery')); //DOM node
  4.    
  5.     $album = $galery->appendChild($xml->createElement('album'));
  6.     //создание объекта 1
  7.     $item = $album->appendChild($xml->createElement('item'));
  8.     //id записи
  9.     $itemid = $item->appendChild($xml->createElement('itemid'));
  10.     $itemid->appendChild($xml->createTextNode('1'));
  11.     //имя файла
  12.     $filename = $item->appendChild($xml->createElement('filename'));
  13.     $filename->appendChild($xml->createTextNode('photo1.jpg'));
  14.     //описание
  15.     $itemdescription = $item->appendChild($xml->createElement('description'));
  16.     $itemdescription->appendChild($xml->createTextNode('Это описание 1'));
  17.    
  18.     //создание объекта 2
  19.     $item = $album->appendChild($xml->createElement('item'));
  20.     //id записи
  21.     $itemid = $item->appendChild($xml->createElement('itemid'));
  22.     $itemid->appendChild($xml->createTextNode('2'));
  23.     //имя файла
  24.     $filename = $item->appendChild($xml->createElement('filename'));
  25.     $filename->appendChild($xml->createTextNode('photo2.jpg'));
  26.     //описание
  27.     $itemdescription = $item->appendChild($xml->createElement('description'));
  28.     $itemdescription->appendChild($xml->createTextNode('Это описание 2')); // DOM text
  29.    
  30.     $xml->formatOutput = true;
  31.     $xml->save('galery.xml');
  32.  


далее открываю его уже при помощи SimpleXML

PHP:
скопировать код в буфер обмена
  1.  
  2. $simplexml = simplexml_load_file('galery.xml');
  3.  
  4.     print_r($simplexml);
  5.  


Всё выводится замечательно, но вот когда я захотел изменить содержимое, тут возникли неприятности.
Нашел некую функцию преобразования из SimpleXML в DOM


Вот тут то и начались проблемы. Когда я создавал объект дом - это был "документ ДОМ", а после преобразования у меня получился "элемент ДОМ"

Понимаю что делаю коряво, так как брал огрызки кода в разных местах. Хотелось бы узнать как или чем преобразовывать ХМЛ данные для их удобной обработки? Может лучше пользоваться чисто функциями СимплХМЛ (и какими именно?) или чисто функциями ДОМ (тоже желательно указать методы для работы), и особенно интересует как именно приводить объекты ДОМ "документ", "узел/node" и "элемент" к единому виду?

ПыСы: ООП только осваиваю, так что воспринять всё очень нелегко. Буду признателен за помощь.
2. caballero - 15 Ноября, 2011 - 23:21:48 - перейти к сообщению
На хрена вообще нужет DOMDocument для формированиея XML?
XML - это текстовый формат - просто пишешь строчки и все. Это разбирать XML нужен парсер.

И при чем тут ООП. У тебя есть готовый библиотечный модуль - изучи его функции и все.
В твоем случае достаточно формировать XML строками а разбирать SimpleXml
3. Panoptik - 16 Ноября, 2011 - 00:01:28 - перейти к сообщению
Цитата:
XML - это текстовый формат - просто пишешь строчки и все.
Это я в курсе, использую библиотеки для того чтобы всё было по стандартам

DOMDocument использовал - потому как это первое что попалось мне по созданию этих вещей. Собственно я и спрашивал правильно ли, и что может быть лучше и как его использовать. Поскольку уже сам немного въехал в SimpleXml, то буду скорее всего пользовать его
(Добавление)
а собственно каким самым простым способом создавать этот самый xml? чтото я не нашел функции в simpleXML
4. caballero - 16 Ноября, 2011 - 00:47:01 - перейти к сообщению
SimpleXML прежде всего для разбора предназначен, там нет многих функций по изменению XML.

 

Powered by ExBB FM 1.0 RC1