Artem-Samsung
10-08-2010, 16:14
Воспользовался руководством:
http://comp.dmkos.ru/publ/10-1-0-128
$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]: <market> 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 15
line 15 - это
while ($reader->read()) {
Чтение XML: http://djone.com.ua/market.xml
Выполнение скрипта: http://deykun.com/djone/xml.php
http://comp.dmkos.ru/publ/10-1-0-128
$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]: <market> 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 15
line 15 - это
while ($reader->read()) {
Чтение XML: http://djone.com.ua/market.xml
Выполнение скрипта: http://deykun.com/djone/xml.php