如何将PHP数组写入XML?

问题描述

<?php
 if (isset($_POST['submitProduct']))
 {
     $xml = new DomDocument("1.0","UTF-8");
     $xml->load('./data/productDB.xml');

     $productName = $_POST['productName'];
     $productDescription = $_POST['productDescription'];
     $quantity = $_POST['quantity'];
     $stock = $_POST['stock'];
     $price = $_POST['price'];
     $size = $_POST['size'];
     $type = $_POST['type'];

     $rootTag = $xml->getElementsByTagName("root")->item(0);
     $infoTag = $xml->createElement("info");

     $productNameTag = $xml->createElement("product-name",$productName);
     $productDescriptionTag = $xml->createElement("product-description",$productDescription);
     $quantityTag = $xml->createElement("quantity",$quantity);
     $stockTag = $xml->createElement("stock",$stock);
     $priceTag = $xml->createElement("price",$price);


 
     $infoTag->append($productNameTag);
     $infoTag->append($productDescriptionTag);
     $infoTag->append($quantityTag);
     $infoTag->append($stockTag);
     $infoTag->append($priceTag);



     $rootTag->append($infoTag);
     $xml->save("productDB.xml");
 }
?>

在这里,我有$ size和$ type这两个数组。但是,如果我使用以下方法将这些数组添加到xml中:

$sizeTag = $xml->createElement("size",$size);

我收到以下错误: 警告:DOMDocument :: createElement()期望参数2为字符串,给定数组

如何将数组写入xml? PHP是否有内置方法?

解决方法

基于this

if (isset($_POST['submitProduct'])) {
    // ...
    
    $data = [
        'productName' => $_POST['productName'],'productDescription' => $_POST['productDescription'],'quantity' => $_POST['quantity'],// ...
    ];

    $xml = new SimpleXMLElement('<root/>');
    array_walk_recursive($data,[$xml,'addChild']);

    // ...
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...