项目截图:需求:图中的数据用XML存储、读取、删除、修改
目标XML文件(net_config.xml):
<?xml version="1.0" encoding="UTF-8"?> <nets> <line> <name id="1">10.0.101.0</name> <address>10.0.101.0</address> <mask>255.255.255.0</mask> <type>网络共享</type> <date>20140324</date> </line> <line><name>10.0.4.19</name><address>10.0.4.19</address><mask>0.0.0.0</mask><type>share</type><date>1395655669</date></line> <line><name>10.0.4.15</name><address>10.0.4.15</address><mask>0.0.0.0</mask><type>share</type><date>1395655673</date></line> <line><name>123</name><address>123</address><mask>0.0.0.0</mask><type>share</type><date>1395655678</date></line> <line><name>222</name><address>22</address><mask>255.255.192.0</mask><type>share</type><date>1395655845</date></line> </nets>如何新增一个节点?
$xml_path="./public/xml/net_config.xml";//xml路径 $post_name=$this->input->post('name');//提交过来的name值 $post_address=$this->input->post('network');//提交过来的ip地址 $post_mask=$this->input->post('netmask');//提交过来的子网掩码 $post_type=$this->input->post('ntype'); //提交过来的类型 $post_date=time(); //时间戳 $doc = new DomDocument(); //创建一个新的 DOM对象 $doc->load($xml_path); //读取 XML数据 $lines = $doc->documentElement; //获得 XML结构的根 //创建一个新 line节点 $line = $doc->createElement('line'); $lines->appendChild($line); //在新的 line节点上创建 name标签 $name = $doc->createElement('name'); $name->appendChild($doc->createTextNode($post_name)); $line->appendChild($name); //在新的 line节点上创建 address标签 $address = $doc->createElement('address'); $address->appendChild($doc->createTextNode($post_address)); $line->appendChild($address); //在新的 line节点上创建 mask标签 $mask = $doc->createElement('mask'); $mask->appendChild($doc->createTextNode($post_mask)); $line->appendChild($mask); //在新的 line节点上创建 type标签 $type = $doc->createElement('type'); $type->appendChild($doc->createTextNode($post_type)); $line->appendChild($type); //在新的 line节点上创建 date标签 $date = $doc->createElement('date'); $date->appendChild($doc->createTextNode($post_date)); $line->appendChild($date); //将 XML数据写入文件 $fp = fopen($xml_path, "w"); if(fwrite($fp, $doc->saveXML())){ echo 'success'; }else{ echo 'error'; } fclose($fp);
如何删除一个节点?
$doc = new DomDocument(); //创建一个新的 DOM对象 $doc->load($xml_path); //读取 XML数据 $root = $doc->documentElement; //获得 XML结构的根 $line = $doc->getElementsByTagName("line"); foreach($line as $value){ $name = $value->getElementsByTagName( "name" )->item(0)->nodeValue; if($name=='222'){//222为要删除的节点的name值 $value->parentNode->removeChild($value); } } $doc->save($xml_path);如何读取xml ?
$xml = simplexml_load_file($xml_path); $networks=$xml->line ;//$networks为数组 循环读出即可