javascript - 请问PHP如何使用dom对象输出xml文件中的节点名称+节点值?
PHP中文网
PHP中文网 2017-04-11 12:10:12
0
0
311

问题:请问以下代码如何修改可以输出以下内容:
title--11
author--22
content--33

代码如下:

message.html

<!doctype html>
<html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>留言板</title>
    </head>

    <body>
        <p>发表留言</p>
        <form name="message" method='post' action="message.php">
            标题:<input type="text" name="title" /> <br>
            作者:<input type="text" name="author" /> <br>
            内容:<textarea cols="25" rows="10" name="content"></textarea ><br>
            <input type="submit" name="sub" value='提交'>
            <input type="reset" value='重置'>
        </form>
    </body>
</html>

message.php

<?php
    //创建DOM对象
    $dom = new DomDocument();

    //创建根节点threads
    $threads = $dom->createElement('threads');
    $dom->appendChild($threads);

    //创建根节点threads的子节点thread
    $thread = $dom->createElement('thread');
    $threads->appendChild($thread);

    //创建thread的子节点title
    $title = $dom->createElement('title');
    $thread->appendChild($title);

    //为title创建文本子节点
    $title_value = $dom->createTextNode($_POST['title']);
    $title->appendChild($title_value);

    //创建thread的子节点author
    $author = $dom->createElement('author');
    $thread->appendChild($author);

    //为author创建文本子节点
    $author_value = $dom->createTextNode($_POST['author']);
    $author->appendChild($author_value);

    //创建thread的子节点content
    $content = $dom->createElement('content');
    $thread->appendChild($content);
    
    //为content创建文本子节点
    $content_value = $dom->createTextNode($_POST['content']);
    $content->appendChild($content_value);

    $xml = $dom->saveXML();//保存XML

    //加载XML文件
    $dom->load($xml);

    //读取根节点
    $root = $dom->documentElement;

    /*
    定义一个使用DOM读取XML内容的函数
    */
    function readXML($node){

        //获取根节点的全部子节点
        $child = $node->childNodes;

        foreach($child as $c){  //循环读取子节点中的内容
            if($c->nodeType == XML_TEXT_NODE){//如果节点类型为文本节点类型
                echo $c->nodeValue.'<br>';
            }elseif($c->nodeType == XML_ELEMENT_NODE){//如果节点类型为节点对象
                //echo $c->nodeName.'--';
                readXML($c);
            }
        }
    }

    $fp = fopen('message.xml','w');//打开文件

    if(fwrite($fp,$xml)){//写入内容
        echo '留言成功<br>';
        readXML($root);
    }else{
        echo '留言失败';
    }

    fclose($fp);//关闭文件
?>

谢谢

PHP中文网
PHP中文网

认证0级讲师

全員に返信(0)
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート