Я пытаюсь выполнить поиск файла XML и вернуть все данные для записи, соответствующие заданным критериям. Вот что-то вроде меня сейчас, оно отлично работает, но я не могу понять, как получить значение других атрибутов в этой же записи.Получение значения атрибута из результата запроса DOMXPath?
Вот пример файла XML, который будет использоваться:
<routing>
<route>
<url>/homepage</url>
<file>/pages/home.php</file>
</route>
</routing>
А вот как я в поиске конкретной записи или записи в документ. Он находит их отлично, но как я могу получить данные из записи, которая была сопоставлена?
$qExp = '//route[url="/homepage"]';
foreach($inst->query($qExp) as $key=>$node) {
print_r($node);
// echo $node->file->nodeValue;
// how would I do this? I can't seem to
// access specific attributes at all
// inside of the DOMXPath class
}
DOMXPath объект будет храниться в $node
, но как я могу использовать DOMXPath
объект, чтобы получить другие значения атрибутов? Например, первая запись XML будет возвращена этим запросом, но как я могу получить значение атрибута file
? Я знаю, что есть функция nodeValue
, но она возвращает все значения поля вместе, и я не могу сортировать, какие части принадлежат к каким полям.
Заранее спасибо за любую помощь, это действительно меня прослушивало.
Может быть, вы озадачены, потому что вы смешивать термины? 'file' является * not * атрибутом, а элементом. Вы обычно обращаетесь к нему, как описано в [Получить определенный дочерний тег из DOMElement в PHP] (http://stackoverflow.com/questions/3816806/get-a-specific-child-tag-from-a-domelement-in- PHP). Также угаданный '$ node-> file-> nodeValue' представляет собой смесь двух разных видов обхода: First SimpleXML, затем DOM. – hakre
Еще одно неправильное мнение: '$ node' будет' DOMXPath', но это 'DOMNode'. – hakre