gpt4 book ai didi

php - 使用 PHP SimpleXML 获取下一个元素

转载 作者:可可西里 更新时间:2023-11-01 00:45:01 25 4
gpt4 key购买 nike

我收到了一个非常奇怪的 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 = simplexml_load_string($data);
$i = 0;
$res = '';
foreach ($xml->name as $name){
$res .= "$name ".$xml->separator[$i];
$i++;
}
$groups = explode(';',$res);

关于php - 使用 PHP SimpleXML 获取下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21416321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com