文件 'test.php的':
<?php
include 'books.php';
$b=new books();
//1. load books from xml to array
$arr=$b->load('books.xml');
//2. modify title
for($i=0,$ms=count($arr);$i<$ms;$i++)
{
if($arr[$i]['fields']['title']=='Podcasting Hacks')
{
$arr[$i]['fields']['title']='Podcasting Pops';
}
}
//3. save array to xml
$b->save('out.xml',$arr);
?>
文件 'books.php':
<?php
class books
{
//load books from xml to array
public function load($fname)
{
$doc=new DOMDocument();
if($doc->load($fname)) $res=$this->parse($doc);
else throw new Exception('error load XML');
return $res;
}
private function parse($doc)
{
$xpath = new DOMXpath($doc);
$items = $xpath->query("book");
$result = array();
foreach($items as $item)
{
$result[]=array('fields'=>$this->parse_fields($item));
}
return $result;
}
private function parse_fields($node)
{
$res=array();
foreach($node->childNodes as $child)
{
if($child->nodeType==XML_ELEMENT_NODE)
{
$res[$child->nodeName]=$child->nodeValue;
}
}
return $res;
}
//save array to xml
public function save($fname, $rows)
{
$doc = new DOMDocument('1.0','utf-8');
$doc->formatOutput = true;
$books = $doc->appendChild($doc->createElement('books'));
foreach($rows as $row)
{
$book=$books->appendChild($doc->createElement('book'));
foreach($row['fields'] as $field_name=>$field_value)
{
$f=$book->appendChild($doc->createElement($field_name));
$f->appendChild($doc->createTextNode($field_value));
}
}
file_put_contents($fname, $doc->saveXML());
}
}
?>
是否需要是你要編輯的動態(值總是不同的,這是一個例子)還是靜態的(你總是需要改變相同的值)? – AmazingDreams 2013-03-01 11:21:15
請參閱此問題:http://stackoverflow.com/q/3577641/1919238 – 2013-03-01 11:21:35
您可以使用[SimpleXML](http://php.net/manual/en/book.simplexml)將XML加載到PHP對象中。 PHP)。您可以操作該對象,然後再將該對象作爲XML寫入文件。你需要的只是SimpleXML。 – 2013-03-01 11:21:57