將xml 轉換為php 陣列的方法:1、用語法「simplexml_load_string()」將xml字串轉換為SimpleXmlElement物件;2、用語法「json_decode()」將SimpleXmlElement物件轉換為PHP陣列; 3.用語法「foreach()」迴圈存取item元素;4、用語法「getDocNamespaces()」處理xml字串命名空間。
本教學操作環境:Windows10系統、php 8.1.3版、dell g3電腦
PHP是一款非常流行的程式語言,可以輕鬆地處理字串和陣列等變數類型。在PHP中,可以使用XML字串作為資料來源,然後將其轉換為陣列進行處理。
將xml 轉換為php 陣列的方法:
#一、將XML字串轉換為SimpleXmlElement物件
在PHP中,首先需要將XML字串轉換為SimpleXmlElement物件。為此,可以使用PHP的內建函數simplexml_load_string()。以下是一個例子:
$xml_string = '<root><item><name>PHP</name><year>1995</year></item><item> <name>MySQL</name><year>1995</year></item></root>'; $xml = simplexml_load_string($xml_string);
這裡,$xml_string是要被轉換為SimpleXmlElement物件的XML字串。 simplexml_load_string()將XML字串轉換為SimpleXmlElement對象,並將其指派給變數$xml。
二、將SimpleXmlElement物件轉換為PHP陣列
#接下來,需要將SimpleXmlElement物件轉換為PHP陣列。可以使用PHP內建函數json_decode()實作。但要注意的是,在轉換之前,需要將SimpleXmlElement物件轉換為JSON字串。以下是一個例子:
$xml_string = '<root><item><name>PHP</name><year>1995</year></item><item> <name>MySQL</name><year>1995</year></item></root>'; $xml = simplexml_load_string($xml_string); $json = json_encode($xml); $array = json_decode($json,TRUE);
在上面的例子中,simplexml_load_string()將XML字串轉換為SimpleXmlElement對象,然後使用json_encode()將SimpleXmlElement物件轉換為JSON字串。最後使用json_decode()將JSON字串轉換為PHP陣列。
三、處理XML字串中的屬性
如果XML字串中包含屬性,則需要使用SimpleXmlElement物件的屬性來存取這些屬性。以下是一個例子:
$xml_string = '<root><item name="PHP" year="1995"/><item name="MySQL" year="1995"/> </root>'; $xml = simplexml_load_string($xml_string); $array = array(); foreach($xml->item as $item) { $array[] = array( 'name' => (string)$item['name'], 'year' => (int)$item['year'] ); }
在這個例子中,$xml_string包含兩個item元素,每個元素都有兩個屬性(name和year)。將XML字串轉換為SimpleXmlElement物件之後,可以使用foreach()循環存取每個item元素,並使用$item['name']和$item['year']存取每個元素的屬性。
注意,將屬性轉換為字串和整數是透過強制類型轉換完成的。
四、處理XML字串中的命名空間
如果XML字串中使用了命名空間,則需要使用SimpleXmlElement物件的命名空間方法來存取這些元素。以下是一個例子:
$xml_string = '<root xmlns="http://www.example.com"><item><name>PHP</name> <year>1995</year></item><item><name>MySQL</name><year>1995</year></item></root>'; $xml = simplexml_load_string($xml_string); $namespaces = $xml->getDocNamespaces(); $xml->registerXPathNamespace('ns', $namespaces['']); $items = $xml->xpath('//ns:item'); $array = array(); foreach($items as $item) { $array[] = array( 'name' => (string)$item->name, 'year' => (int)$item->year ); }
在上面的範例中,$xml_string包含兩個item元素,並且定義了一個命名空間"http://www.example.com"。首先,使用getDocNamespaces()方法取得XML中的所有命名空間,然後使用registerXPathNamespace()方法為命名空間提供一個前綴「ns」。
使用xpath()方法在XML文件中搜尋所有具有命名空間「ns」的item元素。然後,使用foreach()循環遍歷每個元素,並使用$item->name和$item->year存取它們的值。
以上是如何將xml+轉換為php+數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!