缺少属性 - 使用简单 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_r
或 var_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
您好,我在解析 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_r
或 var_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