两种PHP操作处理XML文件的方法:

首先是xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student>
        <name>八阿哥</name>
        <age>20</age>
        <sex>男</sex>
        <qq>132543254</qq>
    </student>
    <student id="meimei">
        <name>你妹妹</name>
        <age>18</age>
        <sex>女</sex>
        <qq>8967465465</qq>
    </student>
    <student>
        <name>你姐姐</name>
        <age>20</age>
        <sex>女</sex>
        <qq>2543645643</qq>
    </student>
    <student>
        <name>你爸爸</name>
        <age>50</age>
        <sex>男</sex>
        <qq>1968754</qq>
    </student>
    <student>
        <name>ttttt</name>
        <age>22</age>
        <sex>女</sex>
        <qq>957435634</qq>
    </student>
    <student>
        <name>qqqqq</name>
        <age>21</age>
        <sex>男</sex>
        <qq>7645764</qq>
    </student>
</students>
PHP操作xml文件第一种方法是通过DOMDocument对象操作的,方法比较复杂:
<?php
    /*php解析,查看xml文件*/
    $dom=new DOMDocument('1.0','utf-8');
    /*载入xml文件*/
    $dom->load('./aaa.xml');
    /*获取子节点*/
    $students=$dom->getElementsByTagName('student');
    /*获取节点数量*/
    $stunum=$students->length;
    $studentsArray=array();
    /*读取直接点数据*/
    for($i=0;$i<$stunum;$i++){
        $studentsArray[]=array(
                'name'=>$students->item($i)->getElementsByTagName('name')->item(0)->nodeValue,
                'age'=>$students->item($i)->getElementsByTagName('age')->item(0)->nodeValue,
                'sex'=>$students->item($i)->getElementsByTagName('sex')->item(0)->nodeValue,
                'qq'=>$students->item($i)->getElementsByTagName('qq')->item(0)->nodeValue,
            );
    }
    var_dump($studentsArray);

    /*php增加xml节点*/
    $nameNode=$dom->createElement('name','你弟弟');
    $ageNode=$dom->createElement('age','23');
    $sexNode=$dom->createElement('sex','男');
    $qqNode=$dom->createElement('qq','235346');
    /*创建父级节点*/
    $studentNode=$dom->createElement('student');
    /*设置属性:*/
    $studentNode->setAttribute('id','9999999');
    /*最佳student到students*/
    $studentNode->appendChild($nameNode);
    $studentNode->appendChild($ageNode);
    $studentNode->appendChild($sexNode);
    $studentNode->appendChild($qqNode);
    /*找到根节点*/
    $studentsNode=$dom->getElementsByTagName('students')->item(0);
    $studentsNode->appendChild($studentNode);
    $dom->save('./aaa.xml');

    /*更新节点xml数据*/
    /*创建新节点*/
    $newNode=$dom->createElement('name','哈哈哈哈');
    /*找到旧节点*/
    $oldNode=$dom->getElementsByTagName('name')->item(7);
    /*找到父级节点*/
    $studentNode=$dom->getElementsByTagName('student')->item(7);
    /*修改替换*/
    $studentNode->replaceChild($newNode,$oldNode);
    /*保存*/
    $dom->save('./aaa.xml');

    /*删除节点*/
    $deleteNode=$dom->getElementsByTagName('student')->item(8);
    /*找到父节点*/
    $studentsNode=$dom->getElementsByTagName('students')->item(0);
    /*删除节点*/
    $studentsNode->removeChild($deleteNode);
    /*保存数据*/
    $dom->save('./aaa.xml');

    /*获取节点属性*/
    $students=$dom->getElementsByTagName('student');
    if($students->item(1)->hasAttribute('id')){
        echo $students->item(1)->getAttribute('id');
    }else{
        echo 'dsgdfs';
    }
第二种是通过simplexml:
<?php
    /*导入xml文件到内存*/
    $xml=simplexml_load_file('./aaa.xml');
    /*foreach ($xml->student as $key => $value) {
        echo $value->name.$value->age.$value->sex.$value->qq.'___';
    }*/
    // var_dump($xml);
    // 获取子节点
    foreach ($xml->children() as $key => $value) {
        /*获取属性*/
        echo $value['id'].'_attr____';
        /*获取值*/
        echo $value->name.'_';
        echo $value->age.'_';
        echo $value->sex.'_';
        echo $value->qq.'|||||||';
    }

    /*添加*/
    /*创建父节点*/
    $student=$xml->addChild('student');
    /*添加属性*/
    $student->addAttribute('id','xiaoJJ');
    $student->addChild('name','小鸡鸡');
    $student->addChild('age','12');
    $student->addChild('sex','男');
    $student->addChild('qq','24364587');
    /*保存xml文件*/
    $xml->asXML('aaa.xml');
?>

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!