我的xml结构如下:
<?xml version="1.0" ?>
<user>
<name>
foo
</name>
<token>
jfhsjfhksdjfhsjkfhksjfsdk
</token>
<connection>
<host>
localhost
</host>
<username>
root
</username>
<dbName>
Test
</dbName>
<dbPass>
123456789
</dbPass>
</connection>
</user>
<user>
... same structure...
</user>
我制作了遍历所有xml节点的代码:
function getConString($node)
{
$item = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "con");
$nodes = new SimpleXMLElement($item);
$result = $nodes[0];
foreach($result as $item => $value)
{
if($item == "token")
{
return $value->__toString();
}
}
}
我想要实现的是$node
等于:
jfhsjfhksdjfhsjkfhksjfsdk
connection
节点作为数组返回,我怎么能实现呢?
答案 0 :(得分:0)
如果您要解析的XML是您在此处发布的内容,则该内容无效,
XML文档必须包含一个根元素,该元素是所有其他元素的父元素:
http://www.w3schools.com/xml/xml_syntax.asp
(你的没有,解析这样的字符串失败了Exception: String could not be parsed as XML in ...
)。
所以你的XML应该是:
<?xml version="1.0" ?>
<users>
<user>
<name>
foo
</name>
<token>
jfhsjfhksdjfhsjkfhksjfsdk
</token>
<connection>
<host>
localhost
</host>
<username>
root
</username>
<dbName>
Test
</dbName>
<dbPass>
123456789
</dbPass>
</connection>
</user>
<user>
... same structure...
</user>
</users>
而且您不需要遍历集合
// $nodes is SimpleXMLElement
$user = $nodes->user[0];
if($user->token)
return $user->token->__toString();