У меня есть XML со следующей структурой:Получение данных из XML вкл. дети и дисплей в страницу с помощью PHP
<item>
<attributes>
<attribute datatype="text">
<name><![CDATA[name]]></name>
<value><![CDATA[Product Name]]></value>
</attribute>
<attribute datatype="text">
<name><![CDATA[sku]]></name>
<value><![CDATA[PRODUCTSKU]]></value>
</attribute>
<attribute datatype="numeric">
<name><![CDATA[price]]></name>
<value>10000</value>
</attribute>
<attribute datatype="numeric">
<name><![CDATA[eancode]]></name>
<value>123456789</value>
</attribute>
</attributes>
</item>
Теперь здесь я ищу следующий вывод:
Product Name : PRODUCTSKU : 10000 : 123456789
Но с помощью следующего кода я Fetching целые детали под атрибут узла, но я не могу отделить значения SUB уЗЛОВ ...
$reader = new XMLReader();
$reader->open('test.xml');
$id = 'attributes';
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT) {
$exp = $reader->expand();
if ($exp->nodeName == $id)
echo "<b>" . $exp->nodeName . " : </b>" . $exp->nodeValue . "<br />";
}
}
Я также попытался это с DomDocument также:
$xml = new DOMDocument();
$xml->load('test.xml');
$root = $xml->documentElement;
foreach($root->childNodes as $node){
//print $node->nodeName.' - '.$node->nodeValue;
print $node->nodeValue;
}
Но это также показывает все вложенные узлы вместе ... Я хочу, чтобы отделить их и хранить в БД ... Пожалуйста, помогите мне с этим ... утром борется с этой тихой долго
Я не знаком с классом XMLReader, но вы можете вызвать функцию расширения снова идти уровень глубже? –
@scrowler ... я также не очень хорошо знаком с этим ... использую XMLReader, так как файл слишком велик, а XMLReader - лучший вариант для чтения такого файла. – user3305327
Можете ли вы вызвать функцию expand в вашем if-заявлении еще раз, чтобы перейти к уровень глубже? Возможно, вы захотите изменить использование SimpleXML или DOMDocument, которые также являются родными для PHP –