如何使用PHP解析具有多个根元素的XML? [英] How can I parse an XML with multiple root elements using PHP?

查看:148
本文介绍了如何使用PHP解析具有多个根元素的XML?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用PHP读取此XML文件,并且我有两个根元素。我用PHP编写的代码只读取一个根元素,当我添加另一个根元素(<action>)时,它会给我一个错误。 我想这样做:if($xml->action=="register")然后打印所有参数。

这是我的XML文件:

<?xml version='1.0' encoding='ISO-8859-1'?>
<action>register</action>
<paramters>
    <name>Johnny B</name>
    <username>John</username>    
</paramters>

这是我的PHP脚本:

<?php
$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
{
    echo $child->getName() . ": " . $child . "<br />";
}
?>

我真的不知道怎么做……

推荐答案

修复您的xml,它无效。XML文件只能有一个根元素。

有效的XML示例:

<?xml version='1.0' encoding='ISO-8859-1'?>
<action>
    <type>register</type>
    <name>Johnny B</name>
    <username>John</username>
</actions>

或者如果您只希望参数有自己的元素:

<?xml version='1.0' encoding='ISO-8859-1'?>
<action type="register">
    <name>Johnny B</name>
    <username>John</username>
</actions>

或者如果您想要多个操作:

<?xml version='1.0' encoding='ISO-8859-1'?>
<actions>
    <action type="register">
        <name>Johnny B</name>
        <username>John</username>
    </action>
</actions>

编辑

正如我在评论中所说,您的老师应该修复他的XML。它是invalid。此外,他还应该将他的XML通过a validator

如果您真的迫不及待,可以引入人工根元素,但这是非常糟糕的做法,应该不惜一切代价避免:

$xmlstring = str_replace(
    array('<action>','</paramters>'),
    array('<root><action>', '</paramters></root>'),
    $xmlstring
);

这篇关于如何使用PHP解析具有多个根元素的XML?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆