PHP DOM对象操作xml文件

1、创建xml并写入节点

 1 /**
 2  * 创建xml并写入节点
 3  */
 4 public function createAndWrite()
 5 {
 6     // 1. 因为是创建,所以声明头部
 7     $dom = new \DOMDocument('1.0', 'utf-8');
 8     $dom->formatOutput = true; // 格式化
 9     // 2. 创建根节点
10     $node = $dom->createElement('urlset');
11     $dom->appendChild($node);
12     // 3. 创建子节点
13     $line = $dom->createElement('line');
14     $node->appendChild($line);
15         // 3.2 创建文本节点
16     $msg = $dom->createTextNode('http://www.baidu.com');
17     $line->appendChild($msg);
18         // 3.3 创建标签属性
19     $attr = $dom->createAttribute('alt');
20     $attr->value = 'url';
21     $line->appendChild($attr);
22     // 4. 保存文档
23 //        $str = $dom->saveXML();
24 //        file_put_contents($this->file, $str);
25         // 或
26     $dom->save($this->file);
27 }

2、获取xml文档节点信息

 1     /**
 2      * 获取xml文档节点信息
 3      */
 4     public function read()
 5     {
 6         // 因为是获取,所以不用初始化头部
 7         $dom = new \DOMDocument();
 8         // 2. 加载xml文件
 9         $dom->load($this->file); // 引入成功返回true,返回false也有可能是xml文档有问题
10         // 3. 以标签名获取节点列表
11         $lines = $dom->getElementsByTagName('line'); // 返回一个DOMNodeList对象
12 //        $lines->length; // 获取对象长度
13         $first = $lines->item(0); // 获取第一条,从0开始
14 //        $first->nodeValue; // 获取标签文本内容,包括子标签
15 //        $first->getAttribute('alt'); // 获取属性值
16     }

3、向节点下添加新节点

 1     /**
 2      * 根节点中添加数据
 3      */
 4     public function appendXml()
 5     {
 6         $dom = new \DOMDocument();
 7         $dom->preserveWhiteSpace = false; // 改值默认为true,如果开启,formatOutput将不起作用
 8         $dom->formatOutput = true; // 格式化
 9         $dom->load($this->file);
10         // 获取根节点
11         $lines = $dom->getElementsByTagName('urlset');
12         $node = $lines->item(0);
13 
14         // 创建url节点
15         $line = $dom->createElement('url');
16         $node->appendChild($line);
17         // 创建url子节点loc
18         $loc = $dom->createElement('loc');
19         $line->appendChild($loc);
20         $locCont = $dom->createTextNode('https://wap.hxsd.tv/');
21         $loc->appendChild($locCont);
22         // 创建url子节点lastmod
23         $lastmod = $dom->createElement('lastmod');
24         $line->appendChild($lastmod);
25         $lastmodCont = $dom->createTextNode('https://wap.hxsd.tv/');
26         $lastmod->appendChild($lastmodCont);
27 
28         $dom->save($this->file);
29     }

 

posted @ 2021-09-05 22:49  九鹤  阅读(56)  评论(0编辑  收藏  举报