2

如果我的问题没有意义,我很抱歉,因为这是我的第一个问题,但是我已经处理了一段时间发布的问题。

对,我有一个 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",
  )
);

然后我必须能够提取数组的数据并将其插入到具有父子关系的表中。

如果您需要更多信息来完成这个问题,请告诉我。

非常感谢您的时间。

问候。

4

3 回答 3

4

你为什么需要它?如果您想以简单的方式访问 XML 树(类似于数组,除了数组表示法仅在存在具有相同元素名称的兄弟姐妹时使用,否则使用属性表示法),您可以使用SimpleXML

于 2010-06-21T16:41:10.730 回答
3

这个函数似乎有效,如果你用谷歌搜索php xml 到数组,你会得到很多好的相关结果。这是一个很好的起点:(来自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;
}
于 2010-06-21T17:16:53.863 回答
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 ;
}
于 2014-08-23T01:10:32.110 回答