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

Форум PHP

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

 

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

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

тема: Нужна помощь с xml и php
 
 автор: vbps   (17.01.2007 в 19:31)   письмо автору
 
 

Помогите разобрать такой вариант

<STUDENTS id="1">
<STUDENT id="12" show="1">
<NAME>Александр</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
...
</STUDENTS>

<STUDENTS id="..."> это категория где много всяких студентов.

ни один из предложеных примеров на форуме не подходит.
все это дело надо в мускуль затолкать.

   
 
 автор: ddhvvn   (17.01.2007 в 19:39)   письмо автору
 
   для: vbps   (17.01.2007 в 19:31)
 

А это точно XML?

   
 
 автор: vbps   (17.01.2007 в 19:55)   письмо автору
 
   для: ddhvvn   (17.01.2007 в 19:39)
 

Да.
Ну или хотябы как получить одновременно значения для таких строк.

<STUDENT id="12" show="1">
<NAME>Александр</NAME>

как я понял для первой строки разбор идет в startElement
а для второй endElement

(взял из имеющихся примеров)

как это одновременно в базу заталкать.

   
 
 автор: Sergey89   (17.01.2007 в 19:40)   письмо автору
 
   для: vbps   (17.01.2007 в 19:31)
 

в маны по simple_xml

   
 
 автор: Саня   (17.01.2007 в 22:18)   письмо автору
 
   для: vbps   (17.01.2007 в 19:31)
 

<?
$xml 
'
<STUDENTS id="1">
<STUDENT id="12" show="1">
<NAME>Александр</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
<STUDENT id="122" show="0">
<NAME>Володя</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
</STUDENTS>'
;
$xml iconv("WINDOWS-1251""UTF-8"$xml);

$dom DOMDocument::loadXML($xml);
$dom->validateOnParse true;
$list $dom->getElementsByTagName("STUDENT");
$name $dom->getElementsByTagName("NAME");
$info $dom->getElementsByTagName("INFO");


$array = array();
for ( 
$i 0$i $list->length$i++ ) {
  
$id $list->item($i)->getAttribute('id');
  
$array[$id]['name'] = $name->item($i)->nodeValue;
  
$array[$id]['show'] = $list->item($i)->getAttribute('show');
  
$array[$id]['info'] = $info->item($i)->nodeValue;
}
print_r($array);

ЗЫ
Похоже у нас завёлся валенок номер два (это я не про автора темы).

   
 
 автор: coloboc66   (18.01.2007 в 09:19)   письмо автору
 
   для: Саня   (17.01.2007 в 22:18)
 

Я, честно говоря, не разбираюсь в совместной работе РНР и XML, но объясните мне: разве это правильно - использовать XML совместно с мускулом?! По-моему, XML используется как-раз ВМЕСТО мускула...

   
 
 автор: Sergey89   (18.01.2007 в 10:24)   письмо автору
 
   для: coloboc66   (18.01.2007 в 09:19)
 

Почему это? XML вполне можно использовать для кэширования данных из базы данных.

   
 
 автор: coloboc66   (18.01.2007 в 10:29)   письмо автору
 
   для: Sergey89   (18.01.2007 в 10:24)
 

Зачем кэшировать данные из базы данных, если можно использовать одну базу данных в виде XML- файла?!

   
 
 автор: Sergey89   (18.01.2007 в 10:33)   письмо автору
 
   для: coloboc66   (18.01.2007 в 10:29)
 

С ней не удобно работать. Да и скорость оставляет желать лучшего.

   
 
 автор: coloboc66   (18.01.2007 в 10:53)   письмо автору
 
   для: Sergey89   (18.01.2007 в 10:33)
 

А вот это довольно спорное утверждение, я так думаю...

   
 
 автор: Sergey89   (18.01.2007 в 11:52)   письмо автору
 
   для: coloboc66   (18.01.2007 в 10:53)
 

Работать с XML, как с БД в PHP не рационально. Чтобы увидеть все прелести XML как бызы, нужно применять такую технологию, как XQuery.

   
 
 автор: coloboc66   (18.01.2007 в 12:01)   письмо автору
 
   для: Sergey89   (18.01.2007 в 11:52)
 

А что это такое в двух словах? Каков сам принцип?

   
 
 автор: Sergey89   (18.01.2007 в 12:10)   письмо автору
 
   для: coloboc66   (18.01.2007 в 12:01)
 

http://en.wikipedia.org/wiki/XQuery Язык запросов в XML документ.

   
 
 автор: coloboc66   (18.01.2007 в 12:20)   письмо автору
 
   для: Sergey89   (18.01.2007 в 12:10)
 

А по-русски есть что-то подобное?

   
 
 автор: Саня   (18.01.2007 в 12:19)   письмо автору
 
   для: coloboc66   (18.01.2007 в 09:19)
 

А кто говорит что тут используются XML-файлы вместо базы данных? Может у них раньше всё было на файлах, а потом решили перенести на mysql?

   
 
 автор: coloboc66   (18.01.2007 в 12:22)   письмо автору
 
   для: Саня   (18.01.2007 в 12:19)
 

А кто говорит что тут используются XML-файлы вместо базы данных? - да никто не говорит. Я спрашивал, зачем использовать XML совместно с мускулом...

   
 
 автор: Саня   (18.01.2007 в 17:45)   письмо автору
 
   для: coloboc66   (18.01.2007 в 12:22)
 

Ну например в протоколе SOAP.

   
 
 автор: vbps   (18.01.2007 в 13:23)   письмо автору
 
   для: Саня   (17.01.2007 в 22:18)
 

Чегото ничего не выводит. Использование DOM требует доп. библиотек?
Кавычки экранировал.

   
 
 автор: coloboc66   (18.01.2007 в 14:01)   письмо автору
 
   для: vbps   (18.01.2007 в 13:23)
 

А у вас настроен РНР для работы с XML?

   
 
 автор: vbps   (18.01.2007 в 14:09)   письмо автору
 
   для: coloboc66   (18.01.2007 в 14:01)
 

Вроде бы да, все примеры что смотрел работают.

   
 
 автор: Саня   (18.01.2007 в 17:09)   письмо автору
 
   для: vbps   (18.01.2007 в 14:09)
 

Для этого скрипта нужен php 5.

   
 
 автор: vbps   (18.01.2007 в 17:41)   письмо автору
 
   для: Саня   (18.01.2007 в 17:09)
 

Во, теперь все ясно.
Будем дальше рыть.

   
 
 автор: Саня   (18.01.2007 в 17:42)   письмо автору
 
   для: vbps   (18.01.2007 в 13:23)
 

Если не работает DOM, можно регулярными выражениями:
<?
$xml 
'
<STUDENTS id="1">
<STUDENT id="12" show="1">
<NAME>Александр</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
<STUDENT id="122" show="0">
<NAME>Володя</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
</STUDENTS>'
;
preg_match_all("#<STUDENT[\s]+id=\"(\d+)\".+>\s*<NAME>(.+)</NAME>\s*<INFO.+>(.+)</INFO>#isU"$xml$m);
$array = array();
for ( 
$i 0$i count($m[0]); $i++ ) {
  
$array[$i]['id'] = $m[1][$i];
  
$array[$i]['name'] = $m[2][$i];
  
$array[$i]['info'] = $m[3][$i];
}
print_r($array);

   
Rambler's Top100
вверх

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