|
|
|
| Помогите разобрать такой вариант
<STUDENTS id="1">
<STUDENT id="12" show="1">
<NAME>Александр</NAME>
<INFO TITLE="Примечания">дополнительные примечания</INFO>
</STUDENT>
...
</STUDENTS>
<STUDENTS id="..."> это категория где много всяких студентов.
ни один из предложеных примеров на форуме не подходит.
все это дело надо в мускуль затолкать. | |
|
|
|
|
|
|
|
для: vbps
(17.01.2007 в 19:31)
| | А это точно XML? | |
|
|
|
|
|
|
|
для: ddhvvn
(17.01.2007 в 19:39)
| | Да.
Ну или хотябы как получить одновременно значения для таких строк.
<STUDENT id="12" show="1">
<NAME>Александр</NAME>
как я понял для первой строки разбор идет в startElement
а для второй endElement
(взял из имеющихся примеров)
как это одновременно в базу заталкать. | |
|
|
|
|
|
|
|
для: vbps
(17.01.2007 в 19:31)
| | в маны по simple_xml | |
|
|
|
|
|
|
|
для: 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);
|
ЗЫ
Похоже у нас завёлся валенок номер два (это я не про автора темы). | |
|
|
|
|
|
|
|
для: Саня
(17.01.2007 в 22:18)
| | Я, честно говоря, не разбираюсь в совместной работе РНР и XML, но объясните мне: разве это правильно - использовать XML совместно с мускулом?! По-моему, XML используется как-раз ВМЕСТО мускула... | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 09:19)
| | Почему это? XML вполне можно использовать для кэширования данных из базы данных. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 10:24)
| | Зачем кэшировать данные из базы данных, если можно использовать одну базу данных в виде XML- файла?! | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 10:29)
| | С ней не удобно работать. Да и скорость оставляет желать лучшего. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 10:33)
| | А вот это довольно спорное утверждение, я так думаю... | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 10:53)
| | Работать с XML, как с БД в PHP не рационально. Чтобы увидеть все прелести XML как бызы, нужно применять такую технологию, как XQuery. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 11:52)
| | А что это такое в двух словах? Каков сам принцип? | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 12:01)
| | http://en.wikipedia.org/wiki/XQuery Язык запросов в XML документ. | |
|
|
|
|
|
|
|
для: Sergey89
(18.01.2007 в 12:10)
| | А по-русски есть что-то подобное? | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 09:19)
| | А кто говорит что тут используются XML-файлы вместо базы данных? Может у них раньше всё было на файлах, а потом решили перенести на mysql? | |
|
|
|
|
|
|
|
для: Саня
(18.01.2007 в 12:19)
| | А кто говорит что тут используются XML-файлы вместо базы данных? - да никто не говорит. Я спрашивал, зачем использовать XML совместно с мускулом... | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 12:22)
| | Ну например в протоколе SOAP. | |
|
|
|
|
|
|
|
для: Саня
(17.01.2007 в 22:18)
| | Чегото ничего не выводит. Использование DOM требует доп. библиотек?
Кавычки экранировал. | |
|
|
|
|
|
|
|
для: vbps
(18.01.2007 в 13:23)
| | А у вас настроен РНР для работы с XML? | |
|
|
|
|
|
|
|
для: coloboc66
(18.01.2007 в 14:01)
| | Вроде бы да, все примеры что смотрел работают. | |
|
|
|
|
|
|
|
для: vbps
(18.01.2007 в 14:09)
| | Для этого скрипта нужен php 5. | |
|
|
|
|
|
|
|
для: Саня
(18.01.2007 в 17:09)
| | Во, теперь все ясно.
Будем дальше рыть. | |
|
|
|
|
|
|
|
для: 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);
|
| |
|
|
|