在php开发中经常碰到一下配置项的参数,很多情况下可以使用数据库进行存储我们的配置参数,但有时候配置的参数比较少这时候可以考虑时候xml的读写操作实现相应功能。下面是我自己整理出来的一个完整例子,包括xml的读写和html页面ui上的显示操作。这是完整的编辑界面效果图:
xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<bisys>
<item>
<name>serverip</name>
<type>字符串</type>
<value>localhost</value>
<describe>服务器ip</describe>
</item>
<item>
<name>timezone</name>
<type>整型</type>
<value>0</value>
<describe>时区</describe>
</item>
<item>
<name>pagesize</name>
<type>整型</type>
<value>50</value>
<describe>每页大小</describe>
</item>
<item>
<name>pageseperator</name>
<type>字符串</type>
<value>#</value>
<describe>页面分割符</describe>
</item>
<item>
<name>idseperator</name>
<type>字符串</type>
<value>%sdf</value>
<describe>ID分割符</describe>
</item>
<item>
<name>firstscreennum</name>
<type>整型</type>
<value>8</value>
<describe>第一屏数量</describe>
</item>
<item>
<name>timeweight</name>
<type>整型</type>
<value>1000</value>
<describe>时间权重参数</describe>
</item>
</bisys>
读取xml操作函数
/**
功能:
根据输入的xml文件输出php数组
输入:
$FILE: xml文件,格式要求是
...
<item>
<name>...</name>
<type>...</type>
<value>...</value>
<describe>...</describe>
</item>
...
返回:
数组
数组格式是<br />
array[][name]
array[][type]
array[][value]
array[][describe]
*/
function getXmlItem($file)
{
$DOC = new DOMDocument('1.0','UTF-8');
$DOC->load($file);
$items = $DOC->getElementsByTagName('item');
$i=0;
foreach( $items as $item )
{
$its = $item->getElementsByTagName( "name" );
$name = $its->item(0)->nodeValue;
$it[$i][name] = $name ;
$its = $item->getElementsByTagName( "type" );
$it[$i][type] = $its->item(0)->nodeValue;
$its = $item->getElementsByTagName( "value" );
$it[$i][value] = $its->item(0)->nodeValue;
$its = $item->getElementsByTagName( "describe" );
$it[$i][describe] = $its->item(0)->nodeValue;
//echo $it[$i][name] ."<br>";
$i++;
}
//print_r($it);
return $it;
}
写xml操作函数
/**
功能:
根据data数组内容保存到xml的value一项
输入:
$FILE: xml文件,格式要求是
...
<item>
<name>...</name>
<type>...</type>
<value>...</value>
<describe>...</describe>
</item>
...
$data:数组值
返回:
*/
function saveXml($file,$data)
{
if(NULL==$data)
{
return ;
}
$DOC = new DOMDocument('1.0','UTF-8');
$DOC->load($file);
$items = $DOC->getElementsByTagName('item');
$flag=0;
$i=0;
/*修改参数*/
foreach( $items as $item )
{
$its = $item->getElementsByTagName( "value" );
$name = $its->item(0)->nodeValue;
$child=$its->item(0);
if($name != $data[$i])
{
$item->replaceChild(new DOMElement("value", $data[$i]), $child);
$flag=1;
}
$i++;
}
/*保存文件*/
if(1==$flag)
{
$DOC->formatOutput = true;
$DOC->saveXML();
$DOC->save($file);
}
else
{
//echo "save nothing";
}
}
在家中xml的时候注意设置xml的编码方式,以免在保存的时候出现中文乱码的现象
$DOC = new DOMDocument('1.0','UTF-8');
点击这里下载完整的代码。
参考文章
http://www.kukaka.org/home/content/148