Попытка извлечь более одного узла из XML-файла через PHP - PullRequest
0 голосов
/ 20 февраля 2012

Мой XML-файл:

<?xml version="1.0" encoding="UTF-8"?>
<item>
    <title>Hello</title>
    <link>http://www.google.com</link>
</item>
<item>
    <title>Some Title</title>
    <link>http://www.google.com</link>
</item>

Я хочу получить этот массив из XML-файла:

  0 => 
    array
      'title' => string 'Hello' (length=5)
      'link' => string 'http://www.google.com' (length=21)
  1 => 
    array
      'title' => string 'Some Title' (length=10)
      'link' => string 'http://www.google.com' (length=21)

Возможно ли это?Если это так, кто-нибудь может мне помочь?

Ура!

1 Ответ

0 голосов
/ 20 февраля 2012

Ваш XML не правильно сформирован.Поскольку тег является первым в документе, следующий фактически завершает документ в соответствии со спецификацией.Вы хотите добавить дополнительный тег, обертывающий , например, ... ... .

Для простой обработкив PHP используйте simplexml, например:

<?php

$xml=<<<EOD
<?xml version="1.0" encoding="UTF-8"?>
<document>
<item>
    <title>Hello</title>
    <link>http://www.google.com</link>
</item>
<item>
    <title>Some Title</title>
    <link>http://www.google.com</link>
</item>
</document>
EOD;

$sxml = simplexml_load_string($xml);
var_dump($sxml);

обратите внимание, что simplexml по умолчанию возвращает объекты вместо значений массива.Однако довольно просто извлечь нужные значения из объектов, а не из массивов.Например:

echo $sxml->item[0]->title;

выведет Hello с указанным выше XML.

...