我有一个包含数据的XML文件,并运行以下代码:
<?php
$xml = simplexml_load_file("index.xml");
$result = $xml->xpath("product");
echo $result[0]->name . '<br />';
echo $result[0]->price . '<br />';
echo $result[0]->info-url . '<br />';
echo $result[0]->image-url . '<br />';
echo $result[0]->longdescription . '<br />';
?>
我的XML文件的一部分
<product>
<name>Test</name>
<price>100</price>
<info-url>http://www.test.com</info-url>
<image-url>http://www.test.com/image.jpg</image-url>
</product>
我收到此错误:
“ 注意:使用未定义的常量网址 - 在 C:\ wamp \ www \ concepts \ xml-to-array \ index.php中假定为'url'在线 11 “
它不喜欢 minus 字符。我怎么得到它?
答案 0 :(得分:8)
解决方案是使用以下内容:
$result[0]->{'image-url'}
对于带有连字符的所有属性,等等。
答案 1 :(得分:-1)
我喜欢使用:
而不是xpath$url = "filename.xml";
$simple = simplexml_load_file($url);
$arr = json_decode( json_encode($simple) , 1);
然后我可以通过以下方式访问元素:
echo $arr['product']['image-url'];
根据评论,这是浪费,但我宁愿牺牲几千字节的内存/几微秒的处理时间,以获得更清晰的导航方式,并显着提高代码的可读性。特别是在深层嵌套的xml文件中。
答案 2 :(得分:-1)
$arr = json_decode( json_encode($simple) , 1);
看起来很简单但生成了错误的数组,例如
<product>
<name>Test</name>
<price/>
</product>
将“price”作为空子阵列返回
[price] => Array
(
)