刚开始碰php,解析xml时碰到问题了

yxxue 2012-11-25 06:56:43
远程XML文档格式如下:

<?xml version="1.0" encoding="UTF-8" ?>
<user>
<data errorcode="0" usernum="100626"
username="u1" sex="1" nickname="麦芽糖"
score="0" province="" city="" area="" />
</user>


我在PHP中这样获取到这个XML:
使用自己写的gethttpdata方法,是为了容错,避免访问远程服务器出错时程序报错。

$login_interface_url = "http://www.1.com/1.xml";
$data = gethttpdata($login_interface_url); //获取远程文件内容
$xml = simplexml_load_string($data);
$xmldata = var_export($xml,true);
//如果使用var_dump()就直接输出了,不是我想要的。



接下来我怎么读取这个xmldata呢?
如何获得<data errorcode="0" usernum="100626" ...>中的各个属性的值呢?
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2012-11-26
  • 打赏
  • 举报
回复
引用 3 楼 yxxue 的回复:
引用 2 楼 xuzuning 的回复:阅读 simplexml_element->attributes 的说明和示例 我按PHP手册里面的方法,取不到值啊,下面是手册上原封不动的代码,可以正常运行, PHP code?1234567891011$string = <<<XML<a><foo name="Jack" game="lonely">1</foo><……
楼主设定xml编码试试,读取的话编码问题还是会出现的。
码无边 2012-11-26
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
本帖最后由 xuzuning 于 2012-11-25 22:28:58 编辑 默认是 utf-8 的PHP code?1234567891011121314$string = <<<XML<?xml version="1.0" encoding="gb2312" ?> <a><foo name="Jack" game="lonely">1……
楼主的方法比较实用
mu_rain 2012-11-26
  • 打赏
  • 举报
回复
同上!
引用 5 楼 xuzuning 的回复:
本帖最后由 xuzuning 于 2012-11-25 22:28:58 编辑 默认是 utf-8 的PHP code?1234567891011121314$string = <<<XML<?xml version="1.0" encoding="gb2312" ?> <a><foo name="Jack" game="lonely">1……
xuzuning 2012-11-25
  • 打赏
  • 举报
回复
默认是 utf-8 的
$string = <<<XML
<?xml version="1.0" encoding="gb2312" ?>
<a>
<foo name="Jack" game="lonely">1</foo>
<foo name="千斤顶" game="寂寞">1</foo>
</a>
XML;

$xml = simplexml_load_string($string);//但也可以接受非 utf-8 声明的xml
foreach($xml->foo as $item) {
foreach($item->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
}

但结果还是 utf-8 的
name="Jack"
game="lonely"
name="千斤顶"
game="寂寞"
一起混吧 2012-11-25
  • 打赏
  • 举报
回复
你的xml文件不是utf-8编码。改成utf-8编码另存一遍。
yxxue 2012-11-25
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
阅读 simplexml_element->attributes 的说明和示例
我按PHP手册里面的方法,取不到值啊,下面是手册上原封不动的代码,可以正常运行,

$string = <<<XML
<a>
<foo name="Jack" game="lonely">1</foo>
</a>
XML;

$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
	echo $a,'="',$b,"\"\n";
}
但如果把name的值换成中文,程序就报错了。 Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xD4 0xDA 0x22 0x20 in E:\php\is8common\1.php on line 10
xuzuning 2012-11-25
  • 打赏
  • 举报
回复
阅读 simplexml_element->attributes 的说明和示例
yxxue 2012-11-25
  • 打赏
  • 举报
回复
我用这样的方法来获取数据,程序虽然不报错,但是取不到任何值。 echo $xml->data[0]->usernum;

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧