我有这个错误:警告: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
答案 0 :(得分:1)
根据您的var_dump
输出,您正在循环的对象实际上并非由SimpleXML生成 - 它们是stdClass
个对象,这是PHP的“没有类的对象”的表示法。 / p>
您不能简单地将对象赋予simplexml_load_string
(顾名思义,并且警告确认,需要字符串值),然后使用SimpleXML的所有方法例如->xpath()
神奇可用。
如果这实际上是XML,您需要找到代码中将其解析为这组stdClass
对象的位置,并用SimpleXML替换当前的解析器。如果它不是XML,则需要找到一些其他方法来查找子节点,而不是XPath。
答案 1 :(得分:0)
simplexml_load_string将字符串转换为SimpleXmlElement。你正在传递物体。这就是问题所在。