缺少属性 - 使用简单 XML 元素解析 XML -

Attributes Missing - Parsing XML with SimpleXMLElement -

您好,我在解析 XML 时遇到问题,我似乎无法弄清楚。这是我转储包含原始 XML 输出的变量时得到的片段:

<hcAmount currencyCode="USD" decimals="2">180</hcAmount>

但是,当我 运行$xml = new \SimpleXMLElement($curlResponse); 时,我没有获得属性(在这种情况下特别是 currencyCode 和 decimals。这是 hcAmount 元素的片段:

 ["hcCharges"]=>
          object(SimpleXMLElement)#452 (2) {
            ["hcDescription"]=>
            string(9) "BASE RATE"
            ["hcAmount"]=>
            string(3) "180"
          }

它缺少 currencyCode 和 decimals 属性,我正试图找出我做错了什么,让它们被删除。谢谢!

如果我理解正确的话,应该这样做:

$str = <<<XML
<hcAmount currencyCode="USD" decimals="2">180</hcAmount>
XML;
$doc = new SimpleXMLElement($str);
$currency = $doc->xpath('//hcAmount/@currencyCode');
echo $currency[0]

输出:

USD

这是一个常见的混淆:SimpleXMLElement 中可用的全部内容在使用 print_rvar_dump 等常见调试功能时不会显示出来,因为它的实现方式。

如果您按照 the examples in the manual 了解如何访问属性,您会发现它们是可以访问的:

$xml = '<example><hcAmount currencyCode="USD" decimals="2">180</hcAmount></example>';
$sx = new SimpleXMLElement($xml);
echo "The text content is " . (string)$sx->hcAmount
     . " and the currencyCode atttribute is " . (string)$sx->hcAmount['currencyCode'];

输出The text content is 180 and the currencyCode atttribute is USD