Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как создать, вложенные теги с помощью DOM XML?
 
 автор: Quies   (21.05.2007 в 01:24)   письмо автору
 
 

Я написал такой код:

$doc = new DOMDocument('1.0','utf-8');
$prof = $doc->createElement('profile','test');
$form = $doc->createElement('format','test');
$text = $doc->createTextNode ("TextNode"); 

$doc->appendChild($prof);
$doc->appendChild($form);
$doc->appendChild($text);

echo $doc->saveXML();


он выводит:

<?xml version="1.0" encoding="utf-8"?>
<profile>test</profile>
<format>test</format>
TextNode

Как мне, вложить одни теги в другие, чтоб получилось следующее:

<?xml version="1.0" encoding="utf-8"?>
<profile>
<format>TextNode</format>
</profile>

Лазил по мануалу, но всё равно не понятно, как это сделать и при помощи каких методов DOM, или функций?
И, ещё вопрос как потом получить доступ, например к тегам 'format', и узнать, что в них находится?

   
 
 автор: Саня   (21.05.2007 в 09:12)   письмо автору
 
   для: Quies   (21.05.2007 в 01:24)
 

<?
$doc 
= new DOMDocument('1.0','utf-8'); 
$prof $doc->createElement('profile','test'); 
$form $doc->createElement('format','test'); 
$text $doc->createTextNode ("TextNode");  

$prof->appendChild($form); 
$prof->appendChild($text); 
$doc->appendChild($prof); 

echo 
$doc->saveXML();

   
 
 автор: Quies   (21.05.2007 в 16:39)   письмо автору
 
   для: Саня   (21.05.2007 в 09:12)
 

Спасибо, правда ваш код выводит немного не то, но суть понятна.
Вот составил результирующий код:

<?
$doc 
= new DOMDocument('1.0','utf-8'); 
$prof $doc->createElement('profile'); 
$form $doc->createElement('format'); 
$text $doc->createTextNode ("TextNode");  

$prof->appendChild($form); 
$form->appendChild($text); 
$doc->appendChild($prof);

echo 
$doc->saveXML();
?>

А, как получить доступ к содержимому тегов?

   
 
 автор: Саня   (21.05.2007 в 20:02)   письмо автору
 
   для: Quies   (21.05.2007 в 16:39)
 

<?
$xml 
'<?xml version="1.0" encoding="utf-8"?>
<profile><format>TextNode</format></profile>'
;

$new DOMDocument::loadXML($xml);

// вариант 1
$format $new->childNodes->item(0)->childNodes->item(0);
print 
$format->nodeValue;

// вариант 2
$format2 $new->getElementsByTagName("format");
print 
$format2->item(0)->nodeValue;

Вариант 1:
$new->childNodes - этим я получаю список всех корневых тегов
$new->childNodes->item(0) - так как корневой тег только один, то из списка выбираю нулевой эленемт - наш тег <profile>
$new->childNodes->item(0)->childNodes - соответственно получаю список всех дочерних тегов корневого элемента <profile>
$new->childNodes->item(0)->childNodes->item(0) - так как список состоит из одного элемента, то выбираю его...
В переменной $format находится элемент <format>
А потом вывожу в браузер содержимое этого тега: print $format->nodeValue;

Вариант 2:
$format2 = $new->getElementsByTagName("format") - получил список всех тегов <format> в документе
Список, конечно же, состоит из одного элемента.
print $format2->item(0)->nodeValue - выбираю элемент из списка и печатаю его nodeValue

   
 
 автор: Quies   (22.05.2007 в 04:13)   письмо автору
 
   для: Саня   (21.05.2007 в 20:02)
 

Спасибо, разобрался :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования