php操作xml
文章描述:
php如何生成xml文件和操作xml文件?
下面就给大家演示一哈php生成xml和对xml文件的操作:
生成
生成xml文件首先要实例化Xml类,然后定义文件头部和数据源,数据来自我们读取数据库文章的数据,代码如下:
$xml = new XmlWriter();
$xml->openMemory();
$xml->setIndent(true);
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('urlset');
$xml->writeAttribute('xmlns', "http://www.sitemaps.org/schemas/sitemap/0.9");
if(!$results = $db->get_results("SELECT * FROM tp_article WHERE id >0 ")){
echo "没有数据,无法生成!";exit;
}
// $results是从数据库读出来的文章列表
foreach ($results as $item) {
$xml->startElement('url');
$xml->startElement('loc');
$xml->text($item->link);
$xml->endElement();
$xml->startElement('lastmod');
$xml->text(date('Y-m-d', strtotime($item->newstime)));
$xml->endElement();
$xml->startElement('changefreq');
$xml->text("monthly");
$xml->endElement();
$xml->startElement('priority');
$xml->text("1.0");
$xml->endElement();
$xml->endElement();
}
$xml->endElement();
$xml->endDocument();
$xml = $xml->outputMemory();
file_put_contents(
'./sitemap.xml',
$xml
);
echo "生成成功!";
生成的文件我们保持为sitemap.xml
读取
生成xml文件以后,我们使用php读取以后xml里面的内容,然后再进行其它操作,读取xml代码如下:
foreach ($xml -> url as $val) {
$attr = $val -> attributes();
echo $val -> loc ;
echo $val -> lastmod ;
echo "</br>";
}
在读取xml文件的时候,会将$xml中将xml文件转换成的数组,可以直接通过$xml->book访问其下节点
修改
批量修改
在对xml文件进行修改的时候,也会将$xml文件转为数组,然后进行操作,下面是对xml文件一个字段进行批量操作,代码如下:
$content = file_get_contents('sitemap.xml');
$xml = new SimpleXMLElement($content);
foreach ($xml -> url as $val) {
$attr = $val -> attributes(); //返回的是一个数字
$val -> loc = "https://www.miyil.com";
}
$xml -> saveXML('sitemap.xml');
指定键值修改
$xml = simplexml_load_file('sitemap.xml'); //读取 XML
$xml->url->loc[0] = 'https://www.miyil.com/1.html'; //修改节点
$xml->saveXML('sitemap.xml');
删除
对xml文件里面的数据进行删除
$content = file_get_contents('sitemap.xml');
$xml = new SimpleXMLElement($content);
for($i = count($xml -> url) - 1 ;$i >= 0 ; $i --){
unset($xml -> url[$i]);
}
$xml -> saveXML('sitemap.xml');
发布时间:2021/08/10
发表评论