通过xml值创建逗号分隔的字符串

时间:2013-07-02 14:48:42

标签: php xml split nodes

我现在正在研究一些系统几个小时,这个小东西对我来说太过于逻辑思考了。 通常我会等几个小时,但这是最后一分钟的工作,我需要完成这个。

这是我的问题:

我有一个XML文件发布到我的PHP文件,PHP文件将某些数据插入到数据库中,但某些XML节点具有相同的名称:

<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>

现在我想获得一个var $ acclist,其中包含逗号分隔的所有值: value1,value2,value3,

我敢打赌,解决这个问题的方法非常简单,但我知道即便是最简单的代码也会变成麻烦。谷歌搜索只会出现以某种方式拥有自己标识符的节点。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用simplexml_load_string来解析html,然后在转换为数组后在节点上调用implode。

注意此代码在php 5.4.6中进行了测试,其行为符合预期。

<?php
$xml = '<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>';
$dat = simplexml_load_string($xml);
echo implode(",",(array)$dat->accessoire);

对于5.3.x,我不得不改为

$xml = '<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>';
$dat = simplexml_load_string($xml);
$dat = (array)$dat;
echo implode(",",$dat["accessoire"]);

答案 1 :(得分:-1)

您可以通过获取能够解析和处理XML的库来实现此目的,例如使用SimpleXML

implode(',', iterator_to_array($accessoires->accessoire, FALSE));

这里的关键部分是使用iterator_to_array(),因为SimpleXML在这里提供了同名的子元素作为迭代器。否则$accessoires->accessoire会自动神奇地为您提供第一个元素(如果有的话)。