Simple_XML中如果对中文结点进行解析?

gxustudent 2009-04-12 07:57:28
比如说我现在有个XML片段如下:
<monster>
<xiyou:姓名 type='text'>孙悟空</xiyou:姓名>
<xiyou:技能 type='text'>火眼金睛</xiyou:技能>
<xiyou:年龄 type='text'>638</xiyou:年龄>
</monster>
想要用Simple_XML 处理,因为比较简单,
但是因为monster下的中文节点无法处理:
使用: echo $detail->姓名;
显示空白。
哪位前辈能好心指点下,谢谢了!
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxustudent 2009-04-14
  • 打赏
  • 举报
回复
OK!!解决了,谢谢jakey9826 ,高手就是高手,一出手就解决了问题,原来我是用Zend for Eclipse调试的,可能是Zend for Eclipse的字符集没有设置好,有学到了,谢谢!!
程序猿之殇 2009-04-14
  • 打赏
  • 举报
回复
你直接创建个utf-8格式的php文件,然后,将上述代码复制过去就行了.

你用iconv转换的只是xml,但你echo $xml->姓名;这句中 姓名也得是utf-8的才成.
这和你转的xml是一个道理.

另外,用中文当节点,本身就不符合习惯.
gxustudent 2009-04-14
  • 打赏
  • 举报
回复
还是没有办法解决,按照楼上的代码,提示非utf-8编码,加了iconv后还是没有办法显示,不过加个同样命名空间的英文节点可以读取,代码如下:
<?php

$str = <<<TEST
<monster xmlns:xiyou="http://www.w3.org/2001/XMLSchema">
<xiyou:姓名 type='text'>孙悟空</xiyou:姓名>
<xiyou:技能 type='text'>火眼金睛</xiyou:技能>
<xiyou:年龄 type='text'>638 </xiyou:年龄>
<xiyou:age type ='text'>648</xiyou:age>
</monster>
TEST;

$str = iconv('gb2312','utf-8',$str);
$xml = simplexml_load_string($str, NULL, 0, 'xiyou', true);
echo $xml->姓名;
echo $xml->age;
?>

返回结果为648,没办法了。
随便问下jakey9826 ,你的PHP是那个版本的?
程序猿之殇 2009-04-13
  • 打赏
  • 举报
回复
//需要指定前缀

$str = <<<TEST
<monster xmlns:xiyou="http://www.w3.org/2001/XMLSchema">
<xiyou:姓名 type='text'>孙悟空</xiyou:姓名>
<xiyou:技能 type='text'>火眼金睛</xiyou:技能>
<xiyou:年龄 type='text'>638 </xiyou:年龄>
</monster>
TEST;
$xml = simplexml_load_string($str, NULL, 0, 'xiyou', true);
echo $xml->姓名;

21,886

社区成员

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

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