如何在PHP中使用xpath获取Xml节点的字符串值? 我RTM但是有更复杂的情况,使用foreach我只想要我的节点文本。 XML:
<ValCurs Date="00.00.0000" name="Official exchange rate">
<Valute ID="47">
<NumCode>978</NumCode>
<CharCode>EUR</CharCode>
<Nominal>1</Nominal>
<Name>Euro</Name>
<Value>17.4619</Value>
</Valute>
</ValCurs>
我的所作所为:
$xmlToday = simplexml_load_file($urlToday);
$EurToday = $xmlToday->xpath("/ValCurs/Valute[@ID='47']/Value");
$EurToday = array(1) { [0]=> object(SimpleXMLElement)#3 (1)
{ [0]=> string(7) "17.4619" } }
我只需要价值。作为浮动值。
答案 0 :(得分:3)
SimpleXMLElement::xpath
返回与XPath查询匹配的元素数组。
这意味着如果你只有一个元素,你仍然需要使用一个数组,并提取它的第一个元素:
var_dump($EurToday[0]);
但是这会得到一个SimpleXMLElement
对象:
object(SimpleXMLElement)[2]
string '17.4619' (length=7)
要获取它包含的浮点值,您必须将其转换为浮点数 - 例如,使用floatval
:
var_dump(floatval($EurToday[0]));
哪能得到你想要的东西:
float 17.4619
作为旁注:您应检查xpath
方法是否未返回false
(如果出现错误)或空数组(如果没有匹配)查询),然后尝试使用其返回值。
答案 1 :(得分:2)
参见章节:选择所有价格
/bookstore/book/price/text()
text()似乎得到了你想要的东西。 PHP中的等价似乎是savexml()因此:
$EurToday = (float) $xmlToday->xpath("/ValCurs/Valute[@ID='47']/Value/savexml()");