我正在尝试使用simplexml_load_file
函数解析PHP中的XML文件。一切都很好,除了我的XML文件有一个<TIME>
标签,这是一个PHP函数。
因此以下代码无法获取标记值:
$xml = simplexml_load_file('some_xml_file.xml');
$value = $xml->SOME_TAG->TIME;
我如何获得此值?
答案 0 :(得分:0)
从PHP手册:
访问包含非字符的XML文档中的元素 允许根据PHP的命名约定(例如连字符) 通过将元素名称封装在大括号和 撇号。
示例#3获取
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie->{'great-lines'}->line; // "PHP solves all my web problems"
?>
如果你需要获得一个属性,你可以这样做:
到目前为止,我们只涉及阅读元素名称的工作 他们的价值观SimpleXML还可以访问元素属性。访问 元素的属性就像数组的元素一样。
foreach ($xml->movie[0]->rating as $rating) {
switch((string) $rating['type'])
答案 1 :(得分:0)
这对我有用
<?php
$xmlString = "<top><middle><TIME>1:27</TIME></middle></top>";
$xml = simplexml_load_string($xmlString);
echo $xml->middle->TIME;
php /tmp/xml.php
1:27
答案 2 :(得分:0)
检查XML文件的内容。为了使您的PHP代码可以工作,它应该至少包含这个:
<XML>
<SOME_TAG>
<TIME>1:27</TIME>
</SOME_TAG>
</XML>
当我将此XML文件与您的代码结合使用时,它会按预期工作。
答案 3 :(得分:0)
谢谢大家,我设法得到了价值,但仍然有些奇怪。 XML示例:
<INGREDIENTS>
<INGREDIENT>
<NAME>Potatoes</NAME>
<AMOUNT>10 kg</AMOUNT>
<TME>20 min</TIME>
</INGREDIENT>
</INGREDIENTS>
用于获取NAME,AMOUNT和TIME值的PHP代码:
$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $ing->TIME;
echo $name." / ".$amount." / ".$time;
结果:
Potatoes / 10 kg /
但是,如果我使用TIME标记的整个路径:
$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $xml->INGREDIENTS->INGREDIENT->TIME;
echo $name." / ".$amount." / ".$time;
结果:
Potatoes / 10 kg / 20 min
任何人都可以解释为什么它会这样工作吗?