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 }