我正在尝试拆分XML字符串,如下所示:
<root>
<item attr='test'>test1</item>
<anotherItem>test2</anotherItem>
<item3><t>Title</t><foo></foo></item3>
</root>
我希望数组看起来像:
$arrXml[0] = "<item attr='test'>test1</item>";
$arrXml[1] = "<anotherItem>test2</anotherItem>";
$arrXml[2] = "<item3><t>Title</t><foo></foo></item3>";
我已经查看了Split XML in PHP中的解决方案,但它们只适用于只有“item”节点的XML文档。
我尝试过使用XmlReader但是在使用read()之后,如何让当前节点包含属性的xml? readOuterXml()似乎不起作用,只输出内部值。
xml不包含\ n所以我不能使用explode()。
答案 0 :(得分:1)
使用SimpleXML:
$root = simplexml_load_string($xml);
$arrXml = array();
foreach($root as $child)
$arrXml[] = $child->asXml();
答案 1 :(得分:0)
根据您希望的输出,您要做的是解析字符串而不是XML字符串。 你可以使用正则表达式或只是爆炸。
类似的东西:
$lines = explode("\n", $string);
$arrXml = array();
foreach ($lines as $line) {
$line = trim($line);
if ($line == '<root>' || $line == '</root>') {
continue;
}
$arrXml[] = $line;
}