php simplexmlElement操作xml的命名空间实现代码
php  /  管理员 发布于 7年前   150
提问题的朋友贴出了数据源,来自于:http://code.google.com/intl/zh-CN/apis/contacts/docs/3.0/developers_guide_protocol.html#retrieving_without_query,数据结构大致如下: 最终代码如下: PHP SimpleXML 函数 相关资料 122 在 123 在 原梓番博客 在 博主 在 1111 在
2008-12-10T04:45:03.331Z
这个结构在上面的地址里有,这个是我格式化过的XML数据,现在要取得类似于“
$x = new SimpleXmlElement($str);
foreach($x->entry as $t){
echo $t->id . "
";
echo $t->updated . "
";
$namespaces = $t->getNameSpaces(true);
$gd = $t->children($namespaces['gd']);
echo $gd->phoneNumber;
}
当然,如果不象上面这样写,也可以写成这样:
复制代码 代码如下:
$x = new SimpleXmlElement($str);
foreach($x->entry as $t){
echo $t->id . "
";
echo $t->updated . "
";
//$namespaces = $t->getNameSpaces(true);
//注意这里与上面一段的区别
$gd = $t->children('http://schemas.google.com/g/2005');
echo $gd->phoneNumber;
}
只是象第二种写法就属于硬编码了,这样不太好,万一哪天有变化,还得再更改N多代码。
问题接踵而来,比如象下面这段:
复制代码 代码如下:
这种非标准的XML,没有定义命名空间,怎么办?在这种情况下,其实SimpleXmlElement就已经直接可以解决了,但是会报warnging,因为他认为event这个命名空间不存在。
解决方法是:
复制代码 代码如下:
$xml = @new SimpleXmlElement($str);//在前面加@抑止错误。
echo "";
print_r($xml);
目前看来,这种解决方法比较好。
w3school/php/php_ref_simplexml.htm
PHP SimpleXML
w3school/php/php_xml_simplexml.htm您可能感兴趣的文章:
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号