簡體   English   中英

在PHP中使用DOMDOcument解析XML並返回樹結構數組

[英]Using DOMDOcument in PHP to parse XML and return an array of tree structure

非常抱歉,如果我的問題沒有意義,因為這是我的第一個問題,但是我已經討論了一段時間了。

對,我有一個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",
  )
);

然后,我必須能夠提取數組的數據並將其插入具有父子關系的表中。

如果您需要更多信息以完成此問題,請告訴我。

非常感謝您的寶貴時間。

問候。

你為什么需要它? 如果要以簡單的方式訪問XML樹(類似於數組,除了數組符號僅在存在具有相同元素名稱的兄弟姐妹時使用,否則使用屬性符號),則可以使用SimpleXML

此功能似乎有效,如果您將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;
}

用更好的節點索引(按名稱)重寫最后一個解決方案,並減少參數數量:

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 ;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM