PHP xml 轉陣列 陣列轉 xml 操作

zmxyzmxy1234發表於2020-06-02

直接上程式碼

$path = './data.xml';
$xml = simplexml_load_file($path);
foreach($xml->children() as $child){
    echo $child
}

simplexml_load_file() 函式把 XML 文件載入物件中。
| file | 必需。規定要使用的 XML 文件。 |
| class | 可選。規定新物件的 class。 |
| options | 可選。規定附加的 Libxml 引數。 |
| ns | 可選。 |
| is_prefix | 可選。 |
返回一個SimpleXMLElement 物件

如果是字串怎麼辦?

$xml=simplexml_load_string($note);
print_r($xml)

simplexml_load_string() 函式轉換形式良好的 XML 字串為 SimpleXMLElement 物件。
| data | 必需。規定形式良好的 XML 字串。 |
| classname | 可選。規定新物件的 class。 |
返回一個SimpleXMLElement 物件
微信的xml之類的可以新增選項 將 CDATA 合併為文字節點

simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);

我要的是陣列,可不是物件啊

SimpleXMLElement 物件轉換陣列,直接強轉即可

$array = (array)$SimpleXMLElement;

多維陣列遞迴轉換XML

// 建立新的simpleXML例項,注入記憶體,確定根節點
$xml = new SimpleXMLElement('<root/>');
//陣列轉XML
function arrayToXml($obj, $array)
{
    foreach ($array as $k => $v)
    {
        if(is_numeric($k))
            $k = 'item' . $k;
        if(is_array($v)){
            $node = $obj->addChild($k);
            arrayToXml($node, $v);
        }else{
            $obj->addChild($k, htmlspecialchars($v));
        }
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章