Я пытаюсь найти наиболее эффективный способ синтаксического анализа довольно сложного XML с помощью SimpleXML, и я застрял, когда в документе есть пространства имен.
Хорошо, мой XML выглядит примерно так:
<ns:event xmls:ns="http://example.com/event/1.1">
<ns:eventinfo>
<ns:start year="2011" month="9" />
<ns:eventnames>
<ns:eventname>Superevent</ns:eventname>
</ns:eventnames>
</ns:eventinfo>
<ns:eventlocale>My place</ns:eventlocale>
</ns:event>
Я могу извлечь информацию из «обычных» тегов с помощью:
$data = simplexml_load_string($xml);
foreach ($data->children('ns', true) as $children) {
$child = $children->children('ns',true);
$eventname = ($child->eventname);
}
Это даст $ eventname как Superevent.Однако этот подход не работает с атрибутами ...
Но если бы не было пространств имен, я бы легко извлек атрибуты, например:
$startyear = $data->$start['year'];
Итак -у кого-нибудь появилась идея с легкостью подойти к этой проблеме?Любая информация или идеи будут высоко оценены.