如果我的问题没有意义,我很抱歉,因为这是我的第一个问题,但是我已经查看了一段时间后发布的问题。
我有一个
的XML结构<category>
<id>123456</id>
<name>Sales</name>
<categories>
<category>
<id>2345</id>
<name>UK House prices</name>
</category>
<category>
<id>3456</id>
<name>Property Market Surveys</name>
</category>
</categories>
我想要一个函数来解析上面的xml并生成一个理想的数组来看起来像这样
array(
"123456" =>
array(
"id" => "2345",
"name" => "UK House prces",
),
array(
"id" => "3456",
"name" => "Property Market Surveys",
)
);
然后我必须能够提取数组的数据并将其插入到具有父子关系的表中。
如果您需要更多信息以完成此问题,请与我们联系。
非常感谢你的时间。
问候。
答案 0 :(得分:3)
你为什么需要它?如果要以简单的方式访问XML树(类似于数组,除了只有当兄弟姐妹具有相同的元素名称时才使用数组表示法,否则使用属性表示法),您可以使用SimpleXML。
答案 1 :(得分:3)
此功能似乎有效,如果你谷歌php xml to array,你会得到大量良好的相关结果。 这是一个很好的起点:(来自http://snipplr.com/view/17886/xml-to-array/)
只需将XML指定为参数,它就会返回一个数组:
function xml2array($xml,$recursive = false) {
if (!$recursive ) { $array = simplexml_load_string ($xml); }
else { $array = $xml ; }
$newArray = array();
$array = $array ;
foreach ($array as $key => $value) {
$value = (array) $value;
if (isset($value[0])) { $newArray[$key] = trim($value[0]); }
else { $newArray[$key][] = XML2Array($value,true) ; }
}
return $newArray;
}
答案 2 :(得分:0)
使用更好的节点索引(按名称)重写最后一个解决方案并减少参数数量:
function xml2Array( $xml )
{
$xml = ( array )( is_string( $xml ) ? simplexml_load_string( $xml ) : $xml ) ;
$parse = array() ;
foreach( $xml as $key => $value )
{
$parse[$key] = is_string( $value )
? trim( $value )
: $this->xml2Array( $value )
;
}
return $parse ;
}