#php #xml
#php #xml
Вопрос:
Итак, я анализирую данные из XML-канала в переменные php, и все в порядке, за исключением элемента «link». Он не находится в дочернем элементе, как другие.
Ниже приведен более чистый и простой пример структуры:
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
<link href="http://example.com">
</book>
<book category="web">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
<link href="http://example.com">
</book>
</bookstore>
<bookstore>
<book category="children">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
<link href="http://example.com">
</book>
<book category="web">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
<link href="http://example.com">
</book>
</bookstore>
Как мне прочитать ссылку / href часть XML в родительском узле / bookstore / и поместить ее в строку? Похоже, что он был плохо отформатирован, но я не могу его изменить, поскольку он предоставлен третьей стороной.
Я думал, что смогу загрузить весь /bookstore/ parent и выполнить поиск по нему для ссылки и извлечь значение таким образом, но это не загрузит весь элемент bookstore.
Мой код также отлично извлекает другие дочерние теги и выполняет цикл для отображения данных в списке. Любая помощь будет оценена.
Редактировать: это ссылка на XML-файл, который я должен использовать: https://www.reddit.com/r/elderscrollsonline.xml
Комментарии:
1. В elderscrollsonline.xml ссылка закрыта
<link href="http://example.com" />
Какой анализатор xml вы используете?2. Я просто использую обычный php simplexml_load_file
Ответ №1:
Для SimpleXML — этот код:
$rss = 'some_url_here';
$xml = simplexml_load_file($rss);
Для вас xml:
foreach($xml->bookstore as $bookstore) {
foreach ($bookastore as $book)
echo (string)$book->link['href'];
}
Для ссылок в https://www.reddit.com/r/elderscrollsonline.xml:
foreach($xml->entry as $book) echo (string)$book->link['href'];
Комментарии:
1. Спасибо, Алекс. Это была часть link[‘href’], которую я испортил 🙂 1 Мне нужно было: // Захватить ссылку, если возможно $link = $esoreddit-> entry->link[‘href’];