警告:simplexml_load_string()期望参数1为str​​ing,给定数组

时间:2015-06-16 14:43:54

标签: php xml parsing simplexml php-5.4

我有这个错误:警告:simplexml_load_string()期望参数1是字符串,第195行中给出的对象

还有这个错误: 致命错误:在C:\ wamp \

中的非对象上调用成员函数xpath()

所以我的代码如下:

foreach ( $GetJobResult->JobReferences as $jobreference_index => $JobReferences ) {
            if (isset ( $GetJobResult->JobReferences )) {

                $xmlJobReference = simplexml_load_string ( $JobReferences );

                $JobReferencetitle = $xmlJobReference->xpath ( "//JobReference[Title ='N°  ANCIEN DOSSIER']/Reference" );


                var_dump($GetJobResult->JobReferences);

            }
        }

的var_dump($ GetJobResult-> JobReferences);

object(stdClass)[149]
  public 'JobReference' => 
    array (size=7)
      0 => 
        object(stdClass)[150]
          public 'Type' => string 'STANDARD' (length=8)
          public 'Title' => string 'N° cde client' (length=14)
          public 'Reference' => string '' (length=0)
          public 'ValueType' => string 'ALPHANUMERIC' (length=12)
          public 'ValueLength_Minimum' => int 0
          public 'ValueLength_Maximum' => int 20
      1 => 
        object(stdClass)[151]
          public 'Type' => string 'STANDARD' (length=8)
          public 'Title' => string 'N°  ANCIEN DOSSIER' (length=19)
          public 'Reference' => string '' (length=0)
          public 'ValueType' => string 'NUMERIC' (length=7)
          public 'ValueLength_Minimum' => int 0
          public 'ValueLength_Maximum' => int 6

2 个答案:

答案 0 :(得分:1)

根据您的var_dump输出,您正在循环的对象实际上并非由SimpleXML生成 - 它们是stdClass个对象,这是PHP的“没有类的对象”的表示法。 / p>

您不能简单地将对象赋予simplexml_load_string(顾名思义,并且警告确认,需要字符串值),然后使用SimpleXML的所有方法例如->xpath()神奇可用。

如果这实际上是XML,您需要找到代码中将其解析为这组stdClass对象的位置,并用SimpleXML替换当前的解析器。如果它不是XML,则需要找到一些其他方法来查找子节点,而不是XPath。

答案 1 :(得分:0)

simplexml_load_string将字符串转换为SimpleXmlElement。你正在传递物体。这就是问题所在。