php解析xml问题,得到属性的时候为啥多了个“@”符号

MMDD0827 2011-06-16 03:21:10
我在用simplexml解析
<InstallPolicyConfig PolicyId="PolicyId" Value="Value" Type="Type" IsAllow="IsAllow"/>
这样一段xml的时候得到这样的一个对象:
SimpleXMLElement Object
(
[@attributes] => Array
(
[PolicyId] => PolicyId
[Value] => Value
[Type] => Type
[IsAllow] => IsAllow
)

)
为啥attributes前边会有一个@呢 ?? 这样我怎么才能取得它下边得Array呢 ?
主要的php源码就这句:
print_r(simplexml_load_string("<InstallPolicyConfig PolicyId=\"PolicyId\" Value=\"Value\" Type=\"Type\" IsAllow=\"IsAllow\"/>"));
...全文
210 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
by53008749 2011-06-17
  • 打赏
  • 举报
回复
按5L的方法做不可以么?????
一起混吧 2011-06-16
  • 打赏
  • 举报
回复
那你就把它赋值给变量。再引用传递。
MMDD0827 2011-06-16
  • 打赏
  • 举报
回复
直接这样就行啦~ 谢谢大家的帮忙啦~~
$xml = simplexml_load_string("<InstallPolicyConfig PolicyId=\"PolicyId\" Value=\"Value\" Type=\"Type\" IsAllow=\"IsAllow\"/>");

echo json_encode(array_shift(get_object_vars($xml)));

只不过这样会出现下面的提示:

Debug Strict (PHP 5): /PHP/tests/test.php line 51 - Only variables should be passed by reference(什么只能通过引用传递变量什么的…… 不是太明白~)
piaolankeke 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mmdd0827 的回复:]

我只是想取到那个属性的数组 ,然后直接json_encode 就好了,能得到上边的那种格式就好了~
[/Quote]
我记得当时直接用取attributes方法还是上面的结果,我最后直接循环了一遍重新赋值
MMDD0827 2011-06-16
  • 打赏
  • 举报
回复
我只是想取到那个属性的数组 ,然后直接json_encode 就好了,能得到上边的那种格式就好了~
piaolankeke 2011-06-16
  • 打赏
  • 举报
回复
我遇到过这问题,不过我当时返回的是数组,直接$a['@attributes']['Value']就可以取到值
MMDD0827 2011-06-16
  • 打赏
  • 举报
回复
我的数据本来就不是完整的xml文件啊, 就是n条
<InstallPolicyConfig PolicyId="PolicyId" Value="Value" Type="Type" IsAllow="IsAllow"/>
这个 组成的一个文件。 我要把每条中的属性取出来,然后取它的json编码的格式是这样的:
{"PolicyId":"8df3ecf1-9b05-4ae3-86a4-0c9f26487c9","Value":"C0A86F6F","Type":"IP","IsAllow":false}
床上等您 2011-06-16
  • 打赏
  • 举报
回复
建议lz把你的数据发出来
一起混吧 2011-06-16
  • 打赏
  • 举报
回复
貌似你那种数据结构用simplexml_load_string出来的是会有个@吧,要是成对的像<name></name>这样的标签就不会有,应该影响不大,用楼上的方法就可去掉。
amani11 2011-06-16
  • 打赏
  • 举报
回复
可以这样遍历

$xml = simplexml_load_string("<InstallPolicyConfig PolicyId=\"PolicyId\" Value=\"Value\" Type=\"Type\" IsAllow=\"IsAllow\"/>");

foreach(array_shift(get_object_vars($xml)) AS $key => $val)
{
echo $key, '=>', $val;
}

xuzuning 2011-06-16
  • 打赏
  • 举报
回复
看看 手册 中例子
$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
MMDD0827 2011-06-16
  • 打赏
  • 举报
回复
为啥没人理我呢…… 请大家帮帮忙啊……

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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