如何將xml+轉換為php+數組

DDD
發布: 2023-06-02 11:54:19
原創
884 人瀏覽過

將xml 轉換為php 陣列的方法:1、用語法「simplexml_load_string()」將xml字串轉換為SimpleXmlElement物件;2、用語法「json_decode()」將SimpleXmlElement物件轉換為PHP陣列; 3.用語法「foreach()」迴圈存取item元素;4、用語法「getDocNamespaces()」處理xml字串命名空間。

如何將xml+轉換為php+數組

本教學操作環境:Windows10系統、php 8.1.3版、dell g3電腦

PHP是一款非常流行的程式語言,可以輕鬆地處理字串和陣列等變數類型。在PHP中,可以使用XML字串作為資料來源,然後將其轉換為陣列進行處理。

將xml 轉換為php 陣列的方法:

#一、將XML字串轉換為SimpleXmlElement物件

在PHP中,首先需要將XML字串轉換為SimpleXmlElement物件。為此,可以使用PHP的內建函數simplexml_load_string()。以下是一個例子:

$xml_string = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$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 = &#39;<root><item><name>PHP</name><year>1995</year></item><item>
<name>MySQL</name><year>1995</year></item></root>&#39;;
$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 = &#39;<root><item name="PHP" year="1995"/><item name="MySQL" year="1995"/>
</root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$array = array();
foreach($xml->item as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item[&#39;name&#39;],
        &#39;year&#39; => (int)$item[&#39;year&#39;]
    );
}
登入後複製

在這個例子中,$xml_string包含兩個item元素,每個元素都有兩個屬性(name和year)。將XML字串轉換為SimpleXmlElement物件之後,可以使用foreach()循環存取每個item元素,並使用$item['name']和$item['year']存取每個元素的屬性。

注意,將屬性轉換為字串和整數是透過強制類型轉換完成的。

四、處理XML字串中的命名空間

如果XML字串中使用了命名空間,則需要使用SimpleXmlElement物件的命名空間方法來存取這些元素。以下是一個例子:

$xml_string = &#39;<root xmlns="http://www.example.com"><item><name>PHP</name>
<year>1995</year></item><item><name>MySQL</name><year>1995</year></item></root>&#39;;
$xml = simplexml_load_string($xml_string);
 
$namespaces = $xml->getDocNamespaces();
$xml->registerXPathNamespace(&#39;ns&#39;, $namespaces[&#39;&#39;]);
 
$items = $xml->xpath(&#39;//ns:item&#39;);
$array = array();
foreach($items as $item) {
    $array[] = array(
        &#39;name&#39; => (string)$item->name,
        &#39;year&#39; => (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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板