在PHP中返回XML属性

时间:2018-06-21 19:57:33

标签: php xml

我正在尝试读取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要么抛出错误。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的值在attributes中。

像这样尝试:

echo $xml->attributes()->tc;

Demo

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'];