PHP код:
Код: Выделить всё
$reader = new XMLReader();
if (!$reader->open('http://djone.com.ua/market.xml')) {
die('Не удалось открыть файл');
}
$reader->setParserProperty(XMLReader::VALIDATE, true);
if (!$reader->isValid()) {
die('Неправильный XML');
}
while ($reader->read()) {
if (($reader->nodeType == XMLReader::ELEMENT) && ($reader->name == 'Element1')) {
// считываем атрибуты
$xmlarr[$idx]['Attr1'] = $reader->getAttribute('Attr1');
while ($reader->read()) {
// разбираем вложенные элементы
if (($reader->nodeType == XMLReader::ELEMENT) && ($reader->name == 'Element11')) {
while ($reader->read()) {
if ($reader->nodeType == XMLReader::TEXT) {
// получаем значение из свойства $reader->value;
$xmlarr[$idx][$reader->name] = $reader->value;
}
elseif (($reader->nodeType == XMLReader::ELEMENT) && ($reader->name == 'Element111')) {
// еще один вложенный элемент
while ($reader->read()) {
if ($reader->nodeType == XMLReader::TEXT) /* и т.д. */ {
$xmlarr[$idx]['Element11'][$reader->name] = $reader->value;
}
elseif (($reader->nodeType == XMLReader::END_ELEMENT) && ($reader->name == 'Element111')) {
break;
}
}
}
elseif (($reader->nodeType == XMLReader::END_ELEMENT) && ($reader->name == 'Element11')) {
break;
}
}
}
elseif (($reader->nodeType == XMLReader::ELEMENT) && ($reader->name == 'Element12')) {
while ($reader->read()) {
if ($reader->nodeType == XMLReader::TEXT) {
// ... = $reader->value;
}
elseif (($reader->nodeType == XMLReader::END_ELEMENT) && ($reader->name == 'Element12')) {
break;
}
}
}
elseif (($reader->nodeType == XMLReader::END_ELEMENT) && ($reader->name == 'Element1')) {
$idx += 1;
break;
}
}
}
}
Получаю ошибки:
Код:
Код: Выделить всё
Warning: XMLReader::read() [xmlreader.read]: http://djone.com.ua/market.xml:2: validity error : Validation failed: no DTD found ! in /web/sites/deykun.com/djone/xml.php on line 15
Warning: XMLReader::read() [xmlreader.read]: in /web/sites/deykun.com/djone/xml.php on line 15
Warning: XMLReader::read() [xmlreader.read]: ^ in /web/sites/deykun.com/djone/xml.php on line 15
Warning: XMLReader::read() [xmlreader.read]: An Error Occured while reading in /web/sites/deykun.com/djone/xml.php on line 15line 15 - это
Код:
Код: Выделить всё
while ($reader->read()) {Чтение XML:
Выполнение скрипта:
