我正在尝试读取PHP中XML对象的属性,但无法获取该值。
XML看起来像这样:
<TransResult>
<ResultCode tc="5">Failure</ResultCode>
<ResultInfo>
<ResultInfoCode tc="200"/>
<ResultInfoDesc>Product not available</ResultInfoDesc>
我尝试过:
$resultInfoCode=$xml->TransResult->ResultInfo->ResultInfoCode;
$resultInfoCode=$xml->TransResult->ResultInfo->ResultInfoCode['tc'];
这些的其他几种变体,但要么返回null要么抛出错误。
非常感谢您的帮助。
答案 0 :(得分:1)
您的值在attributes中。
像这样尝试:
echo $xml->attributes()->tc;
attributes
返回类型为SimpleXMLElement的对象,该对象具有方法__toString,因此您可以使用echo返回字符串内容。
编辑以获取更新的数据:
您可以使用xpath:
$item = $xml->xpath('//TransResult/ResultInfo/ResultInfoCode')[0]->attributes()->tc;
echo $item;
答案 1 :(得分:1)
如果您只是在SimpleXMLElement
中包含此xml标记,则数组表示法可用于属性访问。
$xml = new SimpleXMLElement('<ResultInfoCode tc="200"/>');
echo (string)$xml['tc'];
如果ResultInfoCode
是嵌套的,则只需使用对象访问符号,然后再使用数组访问即可。
$xml = new SimpleXMLElement('<data><ResultInfoCode tc="200"/></data>');
echo (string)$xml->ResultInfoCode['tc'];
这应该在所有PHP版本中都有效(已通过5.6-7.3测试)。如果输入错误或为null,则表示您没有选择正确的标签,或者还有其他错误。
您必须使用
$resultInfoCode = $xml->ResultInfo->ResultInfoCode['tc'];