真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用php數(shù)組轉(zhuǎn)xml

如何使用php數(shù)組轉(zhuǎn)xml?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

伊美ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

php數(shù)組轉(zhuǎn)xml的方法:1、不使用回調(diào)函數(shù),代碼為【function outXmlFile($file, $xml_str)】;2、回調(diào)方法,生成不規(guī)則的xml,代碼為【$this->arrTo_Xml($value, $key)】。

php數(shù)組轉(zhuǎn)xml的方法:

方法一:原生的寫法

";
    foreach ($arr as $key => $val) {
        if (is_array($val)) {
            $xml .= "<" . $key . ">" . arrayToXml($val) . "";
        } else {
            $xml .= "<" . $key . ">" . $val . "";
        }
    }
    $xml .= "";
    return $xml;
}
 
$arr = array();
$arr["url"] = array(
    1 => array(
        "loc" => "http://www.php.com/refessories/ind_10-gen_3/",
        "lastmod" => "2018/10/09"
    ),
    2 => array(
        "loc" => "http://www.php.com/refeessories/ind_12-gen_5/",
        "lastmod" => "2018/10/09"
    ),
    3 => array(
        "loc" => "http://www.php.com/refeessories/ind_15-gen_5/",
        "lastmod" => "2018/10/09"
    ),
);
 
$simple_arrtoxml = arrayToXml($arr);
 
var_dump($simple_arrtoxml);
exit;

方法二:寫死的方法,沒有使用回調(diào)函數(shù)

 /**
 * 把特定格式的數(shù)組轉(zhuǎn)化成XML
 *
 * @param $arr  array  數(shù)組格式如下
 * @param string $rootNodeName 最外層節(jié)點(diǎn)(根節(jié)點(diǎn))
 * @return string
 */
function arrToXml($arr, $rootNodeName = 'index')
{
    $Dom = new DOMDocument('1.0', 'utf-8');
 
    // 根節(jié)點(diǎn)
    $root_node = $Dom->createElement($rootNodeName);
    $Dom->appendChild($root_node);
 
    //第一個節(jié)點(diǎn)
    $firstNodeName = key($arr);
    //循環(huán)節(jié)點(diǎn)
    foreach ($arr[$firstNodeName] as $value) {
        $firstNode = $Dom->createElement($firstNodeName);
        $root_node->appendChild($firstNode);
 
        $locNode = $Dom->createElement("loc", $value["loc"]);
        $firstNode->appendChild($locNode);
 
        if ($rootNodeName == 'sitemapindex') {
            $lastmodNode = $Dom->createElement('lastmod', $value["lastmod"]);
        } else {
            $lastmodNode = $Dom->createElement('lastmod');
            $cdata = $Dom->createCDATASection($value["lastmod"]);// 生成日期特殊形式:
            $lastmodNode->appendChild($cdata);
        }
        $firstNode->appendChild($lastmodNode);
    }
    $Dom->formatOutput = true;//將特殊形式輸出出來
    $result = $Dom->saveXML();
    return $result;
}
 
/**
 * 輸出xml數(shù)據(jù)到xml文件中
 *
 * @param $file  string 文件名
 * @param $xml_str
 * @return bool|int
 */
function outXmlFile($file, $xml_str)
{
    echo "生成 ", $file, " 成功!", PHP_EOL;
    return file_put_contents($file, $xml_str);
}
 
/******************** 寫死的方法,沒有使用回調(diào)函數(shù) **************************/
$result = array();
$result["url"] = array(
    1 => array(
        "loc" => "http://www.php.com/refessories/ind_10-gen_3/",
        "lastmod" => "2018/10/09"
    ),
    2 => array(
        "loc" => "http://www.php.com/refeessories/ind_12-gen_5/",
        "lastmod" => "2018/10/09"
    ),
    3 => array(
        "loc" => "http://www.php.com/refeessories/ind_15-gen_5/",
        "lastmod" => "2018/10/09"
    ),
);
 
$res = arrToXml($result, "ulrset");
// outXmlFile('www.baidu.com/sitic.xml', $res);  // 自己選擇要保存的位置
var_dump($res);
exit;
 
// ==========================================================
// 結(jié)果:
/**
 * 
 * 
 * 
 * http://www.php.com/refessories/ind_10-gen_3/
 * 
 * 
 * 
 * http://www.php.com/refeessories/ind_12-gen_5/
 * 
 * 
 * 
 * http://www.php.com/refeessories/ind_15-gen_5/
 * 
 * 
 * 
 */

方法三: 回調(diào)方法,可以生成不規(guī)則的xml  (  方法調(diào)用,與方法二一樣 )

/**
 * @param array $arr 數(shù)組
 * @param int $dom Document
 * @param int $item
 * @return string
 */
function arr_to_xml($arr, $dom = 0, $item = 0)
{
    if (!$dom) {
        $dom = new DOMDocument("1.0");
    }
    if (!$item) {
        $item = $dom->createElement("root");// 根節(jié)點(diǎn)
        $dom->appendChild($item);
    }
    foreach ($arr as $key => $val) {
        $itemx = $dom->createElement(is_string($key) ? $key : "item");
        $item->appendChild($itemx);
        if (!is_array($val)) {
            $text = $dom->createTextNode($val);// 創(chuàng)建一個文本節(jié)點(diǎn)
            $itemx->appendChild($text);
 
        } else {
            arr_to_xml($val, $dom, $itemx); // 自己調(diào)用自己
        }
    }
    return $dom->saveXML();
}
 
 
//  或者下面的這種回調(diào)方法
 
/**
 * 把特定格式的數(shù)組轉(zhuǎn)化成XML
 *
 * @param $arr
 * @param string $nodeName xml子節(jié)點(diǎn)
 * @param string $element
 * @param string $Dom
 * @return string
 */
function arrTo_Xml($arr, $nodeName = 'index', $element = '', $Dom = '')
{
    $Dom = empty($Dom) ? new DOMDocument('1.0', 'utf-8') : $Dom;
 
    if ($element == '') {
        $data = $Dom->createElement($nodeName);
        $Dom->appendChild($data);
    } else {
        $data = $element;
    }
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            if (!is_numeric($key)) {
                $element = $Dom->createElement($key);
                $data->appendChild($element);
            }
            $this->arrTo_Xml($value, $key, $element, $Dom);// 自己調(diào)用自己
        } else {
            if ($key == "lastmod") {
                $element = $Dom->createElement($key);
                $cdata = $Dom->createCDATASection($value); // 生成日期特殊形式:
                $element->appendChild($cdata);
            } else {
                $element = $Dom->createElement($key, $value);// 用createElement創(chuàng)建出來的都是一行(例如:xingmimng
            }
 
            $data->appendChild($element);// 創(chuàng)建的一行放在哪個 xml的節(jié)點(diǎn)下
        }
    }
 
    $Dom->formatOutput = true;// 輸出特殊形式
    $result = $Dom->saveXML();
    unset($Dom);// 釋放資源
    return $result;
}
 
// 數(shù)據(jù)結(jié)構(gòu)    
$result = array();
$result["url"] = array(
    1 => array(
        "loc" => "http://www.php.com/refessories/ind_10-gen_3/",
        "lastmod" => "2018/10/09"
    ),
    2 => array(
        "loc" => "http://www.php.com/refeessories/ind_12-gen_5/",
        "lastmod" => "2018/10/09"
    ),
    3 => array(
        "loc" => "http://www.php.com/refeessories/ind_15-gen_5/",
        "lastmod" => "2018/10/09"
    ),
);
 
 
/************************************************************************************
 * 附加:  xml轉(zhuǎn)為array
 *************************************************************************************/
 
/**
 * 將xml轉(zhuǎn)為array
 * @param string $xml
 * return array
 */
function xml_to_array($xml)
{
    if (!$xml) {
        return false;
    }
 
    //將XML轉(zhuǎn)為array
    //禁止引用外部xml實(shí)體
    libxml_disable_entity_loader(true);
 
    $data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
 
    return $data;
}

關(guān)于如何使用php數(shù)組轉(zhuǎn)xml問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


網(wǎng)站標(biāo)題:如何使用php數(shù)組轉(zhuǎn)xml
文章鏈接:http://weahome.cn/article/psshde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部