simplexmlelement 对象不列出所有子项

simplexmlelement object doesn't list all children

我有这个 xml 文件:

<?xml version="1.0" encoding="utf-8" ?>
  <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
    <item>
      <!-- Basic Product Information -->
      <g:id><![CDATA[FSK10]]></g:id>
      <title><![CDATA[title]]></title>
      <description><![CDATA[desc]]></description>
      <g:product_type><![CDATA[Default Category]]></g:product_type>
      <g:product_type><![CDATA[Default Category > Cat1]]></g:product_type>
      <g:product_type><![CDATA[Default Category > Cat1 > Cat2]]></g:product_type>
      <link><![CDATA[https://www.link.com]]></link>
      <g:image_link><![CDATA[https://www.link.com/media/image.jpg]]></g:image_link>
      <g:condition><![CDATA[new]]></g:condition>
      <g:availability><![CDATA[in stock]]></g:availability>
      <g:quantita><![CDATA[9]]></g:quantita>
      <g:price><![CDATA[68.50EUR]]></g:price>
      <g:brand><![CDATA[FISKARS]]></g:brand>
      <g:ean><![CDATA[6411501967701]]></g:ean>
      <g:mpn><![CDATA[FSK10]]></g:mpn>
      <g:identifier_exists><![CDATA[TRUE]]></g:identifier_exists>
      <g:shipping_weight><![CDATA[1.70kg]]></g:shipping_weight>
    </item>
 </rss>

当我在 php 中调用 SimplexmlElement 时,它没有列出所有子项,它缺少带有命名空间 g: 的标签:

  $xml = simplexml_load_string( $data ); 
  $attributes = $item->children();  //get the rss
  echo htmlentities( $xml->asXML() ) . '<br />';
  foreach ( $attributes as $attr ) {
    echo "$attr<br />";
  }

如何列出所有标签?

如@splash58 评论:您可以使用 children 命令以命名空间作为参数(并将前缀设置为 true)。

代码:

$attributes = $item->children('g', true);
foreach($attributes as $atrr) {
    echo "$attr<br />";
}

可以找到完整的文档 PHP Manual