计算 XML 和 PHP 中有多少 children

Count how many children are in XML with PHP

我对 php 了解一些,很抱歉这个问题:

我有这个文件 xml:

 <?xml version="1.0" encoding="ISO-8859-1"?>
  <alert>
   <status> </status>
   <nothing> </nothing>
   <info>
    <area>
    </area>
   </info>
   <info>
    <area>
    </area>
   </info>
   <info>
    <area>
    </area>
   </info>
  </alert>

我必须做一个for循环并在"foreach"里面为每个 问题是我不确定有什么方法可以知道我必须重复 for 循环多少次。因为在这个文件中 xml (这是一个例子)我不知道有多少

如果满足以下条件则很好:

$url = "pathfile";
$xml = simplexml_load_file($url);
$numvulcani = count($xml->alert->info); // is good ?

for ($i = 0; $i <= $numvulcani; $i++) {
 foreach ($xml->alert->info[$i] as $entry) {
  $area = $entry->area;
 }
}

是真的吗?

抱歉英语不好

尝试将 foreach ($xml->alert->info[$i] as $entry) 替换为:

 foreach ($xml->alert->info[$i] as $j => $entry)

当前项目索引将为$j

您需要为此使用 SimpleXMLElement::count 函数 — 它计算一个元素的子元素。

<?php
$xml = <<<EOF
<people>
 <person name="Person 1">
  <child/>
  <child/>
  <child/>
 </person>
 <person name="Person 2">
  <child/>
  <child/>
  <child/>
  <child/>
  <child/>
 </person>
</people>
EOF;

$elem = new SimpleXMLElement($xml);

foreach ($elem as $person) {
    printf("%s has got %d children.\n", $person['name'], $person->count());
}
?>

输出如下:

Person 1 has got 3 children. Person 2 has got 5 children.

也看看这个 link : xml count using php

你可能把它复杂化了一点,因为它对你来说是新的。

首先,您不需要像 $xml->alert 那样引用 alert 根元素,因为 SimpleXMLElement 名为变量 $xml 表示文档元素 already.

其次,这里不用数,直接foreach即可:

foreach ($xml->info as $info) {
    echo ' * ', $info->asXML(), "\n";
}

这将迭代 info 元素,它们是 alert 元素的子元素。

我推荐 Basic SimpleXML usage guide in the PHP manual 以开始使用 SimpleXML。