Разобрать XML-подпункты с помощью foreach () - PullRequest
4 голосов
/ 25 апреля 2010

У меня есть XML-файл, который требует анализа в PHP. Я использую simplexml_load_file, чтобы загрузить файл следующим образом:

$xml = simplexml_load_file('Project.xml');

Внутри этого XML-файла находится такая структура:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project>
<name>Project 1</name>
<features>
    <feature>Feature 1</feature>
    <feature>Feature 2</feature>
    <feature>Feature 3</feature>
    <feature>Feature 4</feature>
</features>
</project>

Я пытаюсь напечатать содержимое <name> вместе с КАЖДЫМ <feature> элементом в <features>. Я не уверен, как это сделать, потому что существует более 1 элемента с именем <feature>. Любая помощь с благодарностью.

Ответы [ 3 ]

10 голосов
/ 25 апреля 2010

чтобы напечатать текст, попробуйте это:

foreach($xml->features->feature as $key => $value)
{
    echo $value;
}
1 голос
/ 25 апреля 2010

simplexml_load_file () возвращает объект.

Посмотрите на структуру с помощью var_dump ($ xml):

object(SimpleXMLElement)#1 (2) {
  ["name"]=>
  string(9) "Project 1"
  ["features"]=>
  object(SimpleXMLElement)#2 (1) {
    ["feature"]=>
    array(4) {
      [0]=>
      string(9) "Feature 1"
      [1]=>
      string(9) "Feature 2"
      [2]=>
      string(9) "Feature 3"
      [3]=>
      string(9) "Feature 4"
    }
  }
}

Код такой:

<?PHP
$xml = simplexml_load_file('test.xml');
echo $xml->name . "\n";
foreach($xml->features->feature as $f){
  echo "\t$f\n";
}

Будет выводить как:

Project 1
    Feature 1
    Feature 2
    Feature 3
    Feature 4

Что, я полагаю, вам больше или меньше нужно.

0 голосов
/ 25 апреля 2010

Вы можете сделать:

foreach($xml->features->feature as $f) {
    echo $f."\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...