Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SimpleXMLElement空对象_Php_Xml_Parsing - Fatal编程技术网

Php SimpleXMLElement空对象

Php SimpleXMLElement空对象,php,xml,parsing,Php,Xml,Parsing,我试图使用XmlReader解析xml文件,但尽管出于某种原因,我从(commission)节点的xml文件中得到了一个返回,但我也得到了一个返回的空SimpleXMLElement对象。我不知道这是与while循环、switch有关,还是与解析设置中遗漏的内容有关 这是我试图读取的xml文件,您可以看到,只返回了1个结果: <?xml version="1.0" encoding="UTF-8"?> <cj-api> <commissions total-

我试图使用XmlReader解析xml文件,但尽管出于某种原因,我从(commission)节点的xml文件中得到了一个返回,但我也得到了一个返回的空SimpleXMLElement对象。我不知道这是与while循环、switch有关,还是与解析设置中遗漏的内容有关

这是我试图读取的xml文件,您可以看到,只返回了1个结果:

<?xml version="1.0" encoding="UTF-8"?>
<cj-api>
    <commissions total-matched="1">
        <commission>
            <action-status>
                new
            </action-status>
            <action-type>
                lead
            </action-type>
            <aid>
                10730981
            </aid>
            <commission-id>
                1021015513
            </commission-id>
            <country>
            </country>
            <event-date>
                2010-05-08T08:08:55-0700
            </event-date>
            <locking-date>
                2010-06-10
            </locking-date>
            <order-id>
                345007
            </order-id>
            <original>
                true
            </original>
            <original-action-id>
                787692438
            </original-action-id>
            <posting-date>
                2010-05-08T10:01:22-0700
            </posting-date>
            <website-id>
                3201921
            </website-id>
            <cid>
                2815954
            </cid>
            <advertiser-name>
                SPS EurosportBET
            </advertiser-name>
            <commission-amount>
                0
            </commission-amount>
            <order-discount>
                0
            </order-discount>
            <sid>
                0
            </sid>
            <sale-amount>
                0
            </sale-amount>
        </commission>
    </commissions>
</cj-api>

为什么它返回第二个对象:simplexmlement对象(),我需要做什么来纠正它?谢谢。

您在打开和关闭标记时两次点击循环。你需要检查节点类型,比如

  if ($xml->name == 'commission' && $xml->nodeType == XMLReader::ELEMENT) {
     // Process the node
  }
我不知道混合使用XMLReader、DOM和SimpleXML想要实现什么。为什么不直接使用SimpleXML,比如

   $xml = simplexml_laod_file($file);
   $commission = $xml->commissions[0]->commission[0];
   $aid = $commission->{'aid'};
   print_r($aid);

是的,该脚本来自另一个来源,基本上是说xmlreader更适合于大型提要,它使用simplexml处理少量的单个元素。谢谢,现在它可以正常工作了。
  if ($xml->name == 'commission' && $xml->nodeType == XMLReader::ELEMENT) {
     // Process the node
  }
   $xml = simplexml_laod_file($file);
   $commission = $xml->commissions[0]->commission[0];
   $aid = $commission->{'aid'};
   print_r($aid);