0

xmlファイルからセルを読み取る配列があります。「for」で書きましたが、ノードの数がわからないため、このループを開始して終了するように記述したいと思いますforを使用したxml file.myコードの終わりは次のとおりです。

$description=array();

for($i=0;$i<2;$i++)
{
$description[$i]=read_xml_node("dscription",$i);
}

そして私のxmlファイル:

<eth0>
<description>WAN</description>      
</eth0>
<eth1>
<description>LAN</description>      
</eth1>

このコードでは、「2」を知っている必要がありますが、「2」を知る必要がない方法を知りたいです。

4

3 に答える 3

1

どのようなパーサーをお使いかわかりませんが、simplexml の方が簡単なので、simplexml を使ったサンプルコードをまとめてみました。

このような何かがうまくいくはずです:

$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<node>
<eth0>
<description>WAN</description>      
</eth0>
<eth1>
<description>LAN</description>      
</eth1>
</node>
XML;

$xml = new SimpleXMLElement($xmlstr);

foreach ($xml as $xmlnode) {
 foreach ($xmlnode as $description) {
  echo $description . " ";
 }
}

出力:

WAN LAN  
于 2013-06-12T09:06:16.167 に答える
0
$length = count($description);
for ($i = 0; $i < $length; $i++) {
  print $description[$i];
}
于 2013-06-12T09:05:09.980 に答える
0

使用するパーサーでは、XML ドキュメントの最後に到達したときにwhile戻るループを使用できる場合があります。false例えば:

while ($node = $xml->read_next_node($mydoc)) {
    //Do whatever...
}

存在しない場合は、ループcount()の 2 番目のパラメーターとして使用してみてください。for指定した配列の長さを返します。例えば:

for ($i = 0; $i < count($myarray); $i++) {
    //Do whatever...
}
于 2013-06-12T09:05:17.403 に答える