使用SimpleXML时清空xml对象 - 节点不再存在

时间:2012-04-11 14:54:54

标签: php xml simplexml

xml如下:

<root>
   <organizations>
        <organization>
          <info>
            <orgID>1234</orgID>
            <orgName>XYZ Company</orgName>
            <address>
                <address1>1 Main Street</address1>
                <city>Somewhere</city>
                <state>MI</state>
                <zip>12334</zip>
            </address>
          </info>
         </organization> 
      </organizations>
</root>

代码如下:

$ind = strpos($xmlResponse, "<");
$xml = simplexml_load_string(substr($xmlResponse, $ind));
//echo $xml;
$orgList = $xml->organizations->children();

foreach($orgList as $orgList)
{
    echo $orgList->orgName;
}

我收到以下错误:

Warning: main() [function.main]: Node no longer exists in...

违规行是     foreach($orgList as $orgList)

谁能告诉我我做错了什么?我尝试通过50种不同的方式访问xml,并获得该错误或空的xml对象。

提前致谢!

3 个答案:

答案 0 :(得分:0)

尝试使用xpath

将XML放在x.xml文件中 然后创建php文件:

<?php
    $xml = simplexml_load_file('x.xml');
    $orgList = $xml->xpath("/root/organizations/organization/info");
    print $orgList[0]->orgName; 
?>

答案 1 :(得分:0)

当你使用$ orgList作为$ orgList循环时,看起来你正在覆盖xml对象。试试这个:

foreach($orgList as $org)
   echo $org->orgName;

答案 2 :(得分:0)

尝试以下方法:

$xml = simplexml_load_string($xml);

$org = $xml->organizations->children();

foreach($org as $k => $v)
{
    echo $v->info->orgName;
}