使用PHP SimpleXML获取下一个元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用PHP SimpleXML获取下一个元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1781字,纯文字阅读大概需要3分钟。
内容图文
![使用PHP SimpleXML获取下一个元素](/upload/InfoBanner/zyjiaocheng/724/46dd17b694b540ffa10e7c3f4200b8b3.jpg)
我收到了一个非常奇怪的XML文件要处理.
而不是使用组标签对名称进行分组,如下所示:
<data>
<group>
<name>John</name>
<name>Mary</name>
<name>Susan</name>
</group>
<group>
<name>Cesar</name>
<name>Joseph</name>
<name>Sylvia</name>
<name>Steve</name>
</group>
</data>
它在每个元素后插入一个分隔符标记,如下所示:
<data>
<name>John</name>
<separator>,</separator>
<name>Mary</name>
<separator>,</separator>
<name>Susan</name>
<separator>;</separator>
<name>Cesar</name>
<separator>,</separator>
<name>Joseph</name>
<separator>,</separator>
<name>Sylvia</name>
<separator>,</separator>
<name>Steve</name>
<separator>.</separator>
</data>
“;”和“.”是小组分隔符. (我知道,这很奇怪,但我不能改变它,我必须处理很多这些文件)
要获取所有名称和所有分隔符,我可以使用以下代码:
$data = <<<XML
<data>
<name>John</name>
<separator>,</separator>
<name>Mary</name>
<separator>,</separator>
<name>Susan</name>
<separator>;</separator>
<name>Cesar</name>
<separator>,</separator>
<name>Joseph</name>
<separator>,</separator>
<name>Sylvia</name>
<separator>,</separator>
<name>Steve</name>
<separator>.</separator>
</data>
XML;
$xml = simplexml_load_string($data);
foreach ($xml->name as $name){
echo "$name\n";
}
foreach ($xml->separator as $sep){
echo "$sep\n";
}
但是这样,我无法在单个循环中获取名称和对应的分隔符.
有没有办法知道,在第一个循环中,每个名称的下一个元素?
解决方法:
像这样解析XML并构建一个数组:
$xml = simplexml_load_string($x);
foreach ($xml->children() as $name => $value) {
if ($name == 'name') $names[$i][] = (string)$value;
elseif ($name == 'separator' && $value == ';') $i++;
}
输出$名称:
array(2) {
[0]=>array(3) {
[0]=>string(4) "John"
[1]=>string(4) "Mary"
[2]=>string(5) "Susan"
}
[1]=>array(4) {
[0]=>string(5) "Cesar"
[1]=>string(6) "Joseph"
[2]=>string(6) "Sylvia"
[3]=>string(5) "Steve"
}
}
然后,您可以从数组中选择名称.
内容总结
以上是互联网集市为您收集整理的使用PHP SimpleXML获取下一个元素全部内容,希望文章能够帮你解决使用PHP SimpleXML获取下一个元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。