将XML节点拆分为php数组
我正在尝试拆分XML字符串,如下所示:将XML节点拆分为php数组,php,xml,split,Php,Xml,Split,我正在尝试拆分XML字符串,如下所示: <root> <item attr='test'>test1</item> <anotherItem>test2</anotherItem> <item3><t>Title</t><foo></foo></item3> </root> 测试1 但它们只适用于只有“item”节点的XML文档 我尝试过
<root>
<item attr='test'>test1</item>
<anotherItem>test2</anotherItem>
<item3><t>Title</t><foo></foo></item3>
</root>
测试1
但它们只适用于只有“item”节点的XML文档
我尝试过使用XmlReader,但在使用read()之后,如何获得包含其自身xml属性的当前节点?readOuterXml()似乎不起作用,只输出内部值
xml不包含\n,因此无法使用explode()。使用SimpleXML:
$root = simplexml_load_string($xml);
$arrXml = array();
foreach($root as $child)
$arrXml[] = $child->asXml();
根据您希望的输出,您要做的是解析字符串,而不是XML字符串。
您可以使用正则表达式,也可以简单地进行分解
比如:
$lines = explode("\n", $string);
$arrXml = array();
foreach ($lines as $line) {
$line = trim($line);
if ($line == '<root>' || $line == '</root>') {
continue;
}
$arrXml[] = $line;
}
$lines=explode(“\n”,$string);
$arrXml=array();
foreach($line作为$line){
$line=修剪($line);
如果($line=''| |$line=''){
继续;
}
$arrXml[]=$line;
}
恐怕不同的行之间没有\n。我添加了换行符只是为了让我的示例更具可读性。这比你在问题中应该提到的要好:)当我使用“1232”运行此代码时,我得到:[“123”,“2”],所以在浏览器中输出xml时,不要忘记htmlspecialchars
,因为xml节点将被视为HTML代码…啊,谢谢!它一直在工作,我只是没有看到它:/Dumb:(
$lines = explode("\n", $string);
$arrXml = array();
foreach ($lines as $line) {
$line = trim($line);
if ($line == '<root>' || $line == '</root>') {
continue;
}
$arrXml[] = $line;
}