【问题标题】:Empty xml object when using SimpleXML - Node no longer exists使用 SimpleXML 时为空的 xml 对象 - 节点不再存在
【发布时间】:2012-04-11 14:54:53
【问题描述】:

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 对象。

提前致谢!

【问题讨论】:

    标签: php xml simplexml


    【解决方案1】:

    当您使用 $orgList 作为 $orgList 进行循环时,您似乎正在覆盖 xml 对象。试试这个:

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

    【讨论】:

      【解决方案2】:

      尝试以下方法:

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

      【讨论】:

      • 我真正做出的唯一改变包括:更改要在循环中使用的键/值对的命名约定,并添加缺少的对象访问级别“信息”。
      【解决方案3】:

      尝试使用 xpath

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

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

      【讨论】:

      • 在尝试上述操作时出现以下两个错误:注意:未定义的偏移量:0 in 和注意:尝试获取非对象的属性
      • 为什么我好像没有xml对象?我可以回显初始的 $xml,并在通过 simplexml_load_string 加载字符串后立即获得有效输出
      • 你有什么版本的php?检查 ( ).. 让 php 5 运行 xpath!
      猜你喜欢
      • 2011-07-12
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多