|
|
|
|
<?xml version="1.0"?>
<collection>
<person id="10">
<name>
<first>Nick</first>
<last>Petrov</last>
</name>
<birth>
<day>23</day>
<month>12</month>
<year>89</year>
</birth>
<email> nick@ngs.ru
</email>
</person>
<person id="20">
<name>
<first>Bob</first>
<last>Ivanov</last>
</name>
<birth>
<day>03</day>
<month>05</month>
<year>90</year>
</birth>
<email> bob@ngs.ru
</email>
</person>
</collection>
|
вот чтение:
<?
// сначала делаем то же,
// что и в предыдущем примере
$xmlstr = join('',file('Files/_SITEXML.xml'));
if(!$dom = domxml_open_mem($xmlstr)) {
echo "Ошибка при разборе документа\n";
exit;
}
$root = $dom->document_element();
// Получаем массив потомков
// родительского узла
// (в нашем случае это массив <person>)
$nodes = $root->child_nodes();
print_r($nodes);
echo "<hr>";
// Начинаем обработку каждого
// узла в массиве
foreach($nodes as $node){
// Если текущий узел – один
// из узлов <person>, то
// продолжаем ее обработку,
// чтобы получить информацию
// об этой личности
if ($node->tagname=='person'){
// Создаем массив, куда
// будем собирать информацию
// о рассматриваемой личности
$currentPers = array();
// Получаем id личности,
// который хранится в атрибуте 'id'
$currentPers['id'] =
$node->get_attribute('id');
// Получаем массив потомков
// <person>. Это вся
// информация о личности
// (<name>,<birth> и т.д.)
$persons_info =
$node->child_nodes();
// Перебираем все дочерние
// узлы $node
foreach ($persons_info as $info){
// проверяем, является ли узел
// элементом (xml-тегом)
if ($info->type==
XML_ELEMENT_NODE) {
// тогда метод tagname
// возвратит имя этого
// элемента (тега), а метод
// get_content() –
// его содержимое
$currentPers[$info->tagname] =
$info->get_content();
}
}
// выводим на экран полученные
// массивы
print_r ($currentPers);
echo "<br>";
}
}
?>
|
Ошибка:
Fatal error: Call to undefined function domxml_open_mem() in C:\xampp\htdocs\MS1C\Blocks\ImportXML.php on line 5
| |
|
|
|
|
|
|
|
для: dimonich2004
(01.03.2012 в 08:06)
| | ругается что нет в вашем ксампе такой функции как domxml_open_mem()
в php.ini нужно подключать модуль для работы с xml
сделайте echo phpinfo();
и посмотрите что там для xml подключено | |
|
|
|
|
|
|
|
для: Valick
(01.03.2012 в 08:16)
| | extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
extension=php_mbstring.dll
extension=php_exif.dll
;extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
;extension=php_gmp.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mssql.dll
;extension=php_mysql_mysqlnd.dll
extension=php_mysql.dll
;extension=php_mysqli_mysqlnd.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql_mysqlnd.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pdo_sqlite_external.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
[PECL]
;extension=php_ming.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll | |
|
|
|
|
|
|
|
для: dimonich2004
(01.03.2012 в 08:24)
| | php_domxml.dll нужен, у вас его нет
но вот как его установить, не подскажу, просто не сталкивался с этим
сейчас сделал phpinfo() у себя на денвере3 вроде расширение DOMXML есть, но незнаю я пакеты расширения устанавливал с сайта денвера, а может и в базовом пакете уже было...
и SimpleXML там же и куча еще плюшек
____
вывод: забейте на XAMPP юзайте денвер3 :) | |
|
|
|