文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>PHP5 DOM TEST

PHP5 DOM TEST

时间:2008-04-02  来源:liuxingyuyuni


?php
    /**
     * @date Tue Apr 01 19:35:53 CST 2008
     * @user BianYuan
     * @todo PHP5 DOM TEST
     * */
    echo "";
    $xmlFile = "test.xml";
    $dom = new DOMDocument();
    $dom->formatOutput = true;
    $dom->load($xmlFile, LIBXML_NOBLANKS);
   
    $rootNode = $dom->documentElement; // 返回一个DOMElement对象
   
    // 返回根节点的名称
    //echo $rootNode->nodeName;
   
    //返回节点的类型
    //echo $rootNode->nodeType;
    /**
     * @todo 获得指定节点下的所有文本节点值
     * */
    function getAllNodeValue($root) {
        static $nodeValueList;
        $children = $root->childNodes;
        foreach ($children as $node) {
            if($node->hasChildNodes()) {
                getAllNodeValue($node);
            }else{
                $nodeValueList[] = $node->nodeValue;
            }
        }
        return $nodeValueList;
    }
    //print_r(getAllNodeValue($rootNode));
    //=====================================================
    // 遍历 DOMNodeList 的两种方法
    $elements = $dom->getElementsByTagName("author"); // 返回DOMNodeList对象
    // 方法二
    foreach ($elements as $node) {
        ////////////////echo $node->nodeValue . "\n";
    }
    //echo "";
    // 方法二
    for($i=0; $i$elements->length; $i++) {
        ///////////////////echo $elements->item($i)->nodeValue . "\n";
    }
   
    //=====================================================
   
    // 获得所有book节点的属性信息
    $nodeList = $rootNode->getElementsByTagName("book");
    foreach ($nodeList as $node) {
        /**
         * @desc 方法一
         * */
        if(! $node->hasAttributes()) {
            return false;
        }
        $attributes = $node->attributes;
        foreach ($attributes as $attr) {
            $nodeAttrInfo[] = array(
                $node->nodeName => array(
                    'attributeName' => $attr->nodeName,
                    'attributeValue' => $attr->nodeValue
                )
            );
            ////////////////////print_r($nodeAttrInfo);
        }
        /**
         * @desc 直接输出某个属性的值
         * */
        /////////////echo "book节点的属性值:";
        //$isbn = $node->getAttribute("isbn");
        /////////////echo $isbn . "\n";
    }
    //====================================================
    // XML树的添加,修改与删除
    //====================================================
    /**
     * @todo 添加修改XML树
     * */
    //==============
    // 创建book节点 =
    //==============
    /*
    $book = $dom->createElement('book'); //或 $book = new DOMElement("book");
    // 创建book的子节点 name,author,date,describe 此是他们属于孤立状态
    $bookName = $dom->createElement('name', 'book test222');
    $bookAuthor = $dom->createElement('author', 'some user2222');
    $bookDate = $dom->createElement('date', '2008-01-02');
    $bookDesc = $dom->createElement('describe');
    $bookDescText= $dom->createCDATASection('cdata context22222');
    // 创建属性节点
    $bookAttrIsbn= $dom->createAttribute('isbn');
    // 创建属性节点的文本
    $isbnValue = $dom->createTextNode('789456');
   
    // 将name,author,date,describe子节点追加到book节点
    $book->appendChild($bookName);
    $book->appendChild($bookAuthor);
    $book->appendChild($bookDate);
    $book->appendChild($bookDesc);
    // 将cdata节点追加到 $bookDesc变量所代表的节点
    $bookDesc->appendChild($bookDescText);
    // 为属性节点添加文本值
    $bookAttrIsbn->appendChild($isbnValue);
    $book->setAttributeNode($bookAttrIsbn);
   
    // 将$book节点追加到 $rootNode 顶层节点
    $rootNode->appendChild($book);
    */
   
   
    //=========
    // 修改节点= 目标:修改第一个book节点的name值
    //=========
    $nameNodeList = $rootNode->getElementsByTagName("name");
    foreach ($nameNodeList as $bookNameNode) {
         if($bookNameNode->nodeValue = "bianyuan") {
            $bookNameNode->parentNode->replaceChild(new DOMElement("name", "bianyuanbbb"), $bookNameNode);         
         }
    }
    $dom->save('D:\www\Study_Test\test.xml')
?>


相关阅读 更多 +
排行榜 更多 +
像素赛车手mod版下载

像素赛车手mod版下载

赛车竞速 下载
王朝时代高级版官方下载

王朝时代高级版官方下载

策略塔防 下载
像素鸟游戏中文版下载

像素鸟游戏中文版下载

休闲益智 下载