Loop a Loop в XML-файле? - PullRequest
       5

Loop a Loop в XML-файле?

1 голос
/ 24 марта 2012

У меня есть XML-файл, подобный этому:

<name>
    <entry>
        <date>2012-03-18 13:53:23</date>
        <ID>1</ID>
        <category>questions</category>
        <question>who are you?</question>
    <answers>
        <answer text='a man' id='1'/>
        <answer text='a woman' id='2'/>
        <answer text='an animal' id='3'/>
        <answer text='an alien' id='4'/>
    </answers>
        <author>Gorge</author>
    </entry>
</name>

И я пытаюсь зациклить все поля, но когда я добираюсь до точки ответа, она не зацикливает все ответы

какие-нибудь советы, как мне справиться с этим?

Я использую:

foreach($xml->entry as $entry){
echo "<p>";
echo "<strong>Author:</strong> ".$entry->author."<br/>";
echo "</p>";
}

Для получения результата.

Спасибо заранее Patrik

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Похоже, вы используете SimpleXML. Вы, вероятно, хотите сделать что-то вроде этого:

foreach($xml->entry as $entry){
  //iterating through your entry-elements
  echo $entry->question . '<br />';

  foreach($entry->answers->answer as $answer) {
    //iterating through the anwers of the entry-element
    echo $answer['text'] . '<br />';
  }
}

Выход:

кто ты?

  • мужчина
  • женщина
  • животное
  • инопланетянин

http://codepad.org/Nfbo4l59

0 голосов
/ 24 марта 2012

Вы можете сделать это с помощью класса DOMDocument ().

<code>    <?php
    $xml="<name>
        <entry>
            <date>2012-03-18 13:53:23</date>
            <ID>1</ID>
            <category>questions</category>
            <question>who are you?</question>
        <answers>
            <answer text='a man' id='1'/>
            <answer text='a woman' id='2'/>
            <answer text='an animal' id='3'/>
            <answer text='an alien' id='4'/>
        </answers>
            <author>Gorge</author>
        </entry>
    </name>
    ";
    $dom=new DOMDocument();
    $dom->loadXML($xml);

    foreach($dom->getElementsByTagName('entry') as $tagentry)
    {
        foreach($tagentry->getElementsByTagName('answers') as $taganswers)
        {
            foreach($taganswers->getElementsByTagName('answer') as $taganswer)
            {
                $taganswer_array[]=$taganswer->getAttribute('text');
            }
        }
    }

    echo "<pre>";
    print_r($taganswer_array);
    echo "
"; ?>

Выход ::

Array(

   [0] => a man  

   [1] => a woman 

   [2] => an animal 

   [3] => an alien 

)

...