• PHP之XML节点追加操作讲解


    问题:

    最近研究了xml,我想知道,如何用php向已有的xml文档中添加新的节点,比如,xml文档内容如下,并保存为information.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <information>
      <set label='0' value='0' />  
    <set label='3' value='270' />    
    </information>

    我如果想用php的dom方法再在根节点下添加个新的<set label='' value='' />,我该怎么写啊,求助!
    php要实现的效果:
      <?xml version="1.0" encoding="utf-8"?>
    <information>
      <set label='0' value='0' />  
    <set label='3' value='270' />
    <set label='9' value='50' />
    <set label='12' value='680' />
    <set label='15' value='560' />
    <set label='18' value='48' />
    <set label='21' value='714' />
    <set label='31' value='28' />
    </information>

    解答:

    例子解答:

    <?php
    header('Content-type: application/xml');

    $data_array = array(

        array(

        'title' => 'title1',

        'content' => 'content1',

            'pubdate' => '2009-10-11',

        ),

        array(

        'title' => 'title2',

        'content' => 'content2',

        'pubdate' => '2009-11-11',

        )

    );



    //  属性数组

    $attribute_array = array(

        'title' => array(

        'size' => 1

        )

    );



    //  创建一个XML文档并设置XML版本和编码。。

    $dom=new DomDocument('1.0', 'utf-8');



    //  创建根节点

    $article = $dom->createElement('article');

    $dom->appendchild($article);



    foreach ($data_array as $data) {

        $item = $dom->createElement('item');

        $article->appendchild($item);



        create_item($dom, $item, $data, $attribute_array);

    }



    echo $dom->saveXML();



    function create_item($dom, $item, $data, $attribute) {

        if (is_array($data)) {

            foreach ($data as $key => $val) {

                //  创建元素

                $$key = $dom->createElement($key);

                $item->appendchild($$key);



                //  创建元素值

                $text = $dom->createTextNode($val);

                $$key->appendchild($text);



                if (isset($attribute[$key])) {

                //  如果此字段存在相关属性需要设置

                    foreach ($attribute[$key] as $akey => $row) {

                        //  创建属性节点

                        $$akey = $dom->createAttribute($akey);

                        $$key->appendchild($$akey);



                        // 创建属性值节点

                        $aval = $dom->createTextNode($row);

                        $$akey->appendChild($aval);

                    }

                }   //  end if

            }

        }   //  end if

    }   //  end function

    ?>

  • 相关阅读:
    React页面插入script
    Node Sass does not yet support your current environment解决办法
    ReactNative项目结构目录详解
    Android Studio模拟器磁盘空间不足(Not enough disk space to run AVD)
    React Native在window下的环境搭建(二):创建新项目
    React Native在window下的环境搭建(一)
    转:解决AndroidStudio连不上Android设备真机的问题
    ios中设置input为readonly后,解决弹起软键盘的问题
    转: rem与px的转换
    Python中模块之collections系列
  • 原文地址:https://www.cnblogs.com/milantgh/p/3681417.html
Copyright © 2020-2023  润新知