php

位置:IT落伍者 >> php >> 浏览文章

PHP读写XML文件技巧


发布日期:2021年02月02日
 
PHP读写XML文件技巧

常用 如下 几行

header("contenttype:text/html; charset=utf"); //指定PHP使用UTF编码
$xml = simplexml_load_file("examplexml"); //读取xml文件
$newxml = $xml>asXML(); //标准化$xml
$fp = fopen("newxmlxml" "w"); //新建xml文件
fwrite($fp $newxml); //写入xml文件
fclose($fp);

PHP可以方便的生成和读取XML文件PHP主要通过DOMDocumentDOMElement和DOMNodeList来完成XML的读取与写入操作的下面就简要说明下如何使用这些类

一.生成XML文件
对于一个如下XML文件

[html] <?xml version="" encoding="UTF"?>
<article>
<title>PHP访问MySql数据库 初级篇</title>
<link>
</article>
<?xml version="" encoding="UTF"?>
<article>
<title>PHP访问MySql数据库 初级篇</title>
<link>
</article>
我们来看看如何用PHP来生成

首先new一个DOMDocument对象并设置编码格式

$dom = newDOMDocument( UTF);

$dom>formatOutput= true;

再创建<article>结点和<title>结点

$rootelement =$dom>createElement("article");

$title =$dom>createElement("title" "PHP访问MySql数据库 初级篇");

然后创建带文本内容的<link>结点

$link =$dom>createElement("link""

也可以先生成<link>结点再为其添加文本内容

$link = $dom>createElement("link");

$linktext =$dom>createTextNode();

$link>appendChild($linktext);

然后将<title>和<link>结点加入到<article>结点中去

$rootelement>appendChild($title);

$rootelement>appendChild($link);

最后将<article>结点加入到DOMDocument对象中

$dom>appendChild($rootelement);

这样一个完整的XML就生成完毕了再整出整个XML

echo $dom>saveXML() ;

saveXML()也可以只输入部分XML文本如echo $dom>saveXML($link);就只会输出<link>结点<link>

下面再给出一个完整的PHP中数据内容输出到XML文件的例子该例子会对将一个PHP数组输出到XML文件中

[php] <?php
//将数组输出到XML文件中
// by MoreWindows(
$article_array = array(
"第一篇" => array(
"title"=>"PHP访问MySql数据库 初级篇"
"link"=>"
)
"第二篇" => array(
"title"=>"PHP访问MySql数据库 中级篇 Smarty技术"
"link"=>"
)
"第三篇" => array(
"title"=>"PHP访问MySql数据库 高级篇 AJAX技术"
"link"=>"
)
);
$dom = new DOMDocument( UTF);
$dom>formatOutput = true;
$rootelement = $dom>createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom>createElement("article" $key);
$title = $dom>createElement("title" $value[title]);
$link = $dom>createElement("link" $value[link]);
$article>appendChild($title);
$article>appendChild($link);
$rootelement>appendChild($article);

}
$dom>appendChild($rootelement);
$filename = "D:testxml";
echo XML文件大小 $dom>save($filename) 字节;
?>
<?php
//将数组输出到XML文件中
// by MoreWindows(
$article_array = array(
"第一篇" => array(
"title"=>"PHP访问MySql数据库 初级篇"
"link"=>"
)
"第二篇" => array(
"title"=>"PHP访问MySql数据库 中级篇 Smarty技术"
"link"=>"
)
"第三篇" => array(
"title"=>"PHP访问MySql数据库 高级篇 AJAX技术"
"link"=>"
)
);
$dom = new DOMDocument( UTF);
$dom>formatOutput = true;
$rootelement = $dom>createElement("MoreWindows");
foreach ($article_array as $key=>$value)
{
$article = $dom>createElement("article" $key);
$title = $dom>createElement("title" $value[title]);
$link = $dom>createElement("link" $value[link]);
$article>appendChild($title);
$article>appendChild($link);
$rootelement>appendChild($article);
}
$dom>appendChild($rootelement);
$filename = "D:testxml";
echo XML文件大小 $dom>save($filename) 字节;
?>
运行该PHP会在D盘上生成testxml文件(Win + XAMPP + IE测试通过)

二.读取XML文件
以读取前文中生成的D:testxml为例

[php] <?php
//读取XML文件
// by MoreWindows(
$filename = "D:testxml";
$article_array = array();

$dom = new DOMDocument( UTF);
$dom>load($filename);

//得到<article>结点
$articles = $dom>getElementsByTagName("article");
echo <article> 结点个数 $articles>length;
foreach ($articles as $article)
{
$id = $article>getElementsByTagName("id")>item()>nodeValue;
$title = $article>getElementsByTagName("title")>item()>nodeValue;
$link = $article>getElementsByTagName("link")>item()>nodeValue;
$article_array[$id] = array(title=>$title link=>$link);
}

//输出结果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>
<?php
//读取XML文件
// by MoreWindows(
$filename = "D:testxml";
$article_array = array();

$dom = new DOMDocument( UTF);
$dom>load($filename);

//得到<article>结点
$articles = $dom>getElementsByTagName("article");
echo <article> 结点个数 $articles>length;
foreach ($articles as $article)
{
$id = $article>getElementsByTagName("id")>item()>nodeValue;
$title = $article>getElementsByTagName("title")>item()>nodeValue;
$link = $article>getElementsByTagName("link")>item()>nodeValue;
$article_array[$id] = array(title=>$title link=>$link);
}

//输出结果
echo "<pre>";
var_dump($article_array);
echo "</pre>";
?>

               

上一篇:PHP删除文章时同时删除生成的HTML页面

下一篇:基于php中使用excel的简单介绍