一、手动输出xml
/* * 手动输出xml * @author flyer0126 * @since 2012/4/27 */header("Content-Type:text/xml");print '<?xml version="1.0"?>'."\n";print "<shows>\n";$shows = array( array( 'name' => 'aa', 'channel' => 'a1', 'start' => 'a2' ), array( 'name' => 'bb', 'channel' => 'b1', 'start' => 'b2' ), array( 'name' => 'cc', 'channel' => 'c1', 'start' => 'c2' ));foreach($shows as $show){ print "<show>\n"; foreach($show as $tag => $val) { print "<$tag>".htmlspecialchars($val)."</$tag>\n"; } print "</show>\n";}print "</shows>\n";/**<?xml version="1.0"?><shows><show><name>aa</name><channel>a1</channel><start>a2</start></show><show><name>bb</name><channel>b1</channel><start>b2</start></show><show><name>cc</name><channel>c1</channel><start>c2</start></show></shows>**/
二、通过DOMDocument生成xml
/* * 通过DOMDocument生成xml * @author flyer0126 * @since 2012/4/27 */// 创建新文档$dom = new DOMDocument("1.0", "UTF-8");// 创建根元素humans,并将其添加至文档$humans = $dom->appendChild($dom->createElement("humans"));// 创建根元素zhangying,并将其添加至humans$zhangying = $humans->appendChild($dom->createElement("zhangying"));// 创建name元素,并将其添加至zhangying$name = $zhangying->appendChild($dom->createElement("name"));$name->appendChild($dom->createTextNode("张映"));$sex = $zhangying->appendChild($dom->createElement("sex"));$sex->appendChild($dom->createTextNode("男"));$old = $zhangying->appendChild($dom->createElement("old"));$old->appendChild($dom->createTextNode("28"));// 创建根元素tank,并将其添加至humans$tank = $humans->appendChild($dom->createElement("tank"));// 创建name元素,并将其添加至tank$name = $tank->appendChild($dom->createElement("name"));$name->appendChild($dom->createTextNode("tank"));$sex = $tank->appendChild($dom->createElement("sex"));$sex->appendChild($dom->createTextNode("男"));$old = $tank->appendChild($dom->createElement("old"));$old->appendChild($dom->createTextNode("28"));/*// 设置author元素$author = $book->appendChild($dom->createElement("author"));$author->appendChild($dom->createTextNode("zhangh"));$author->setAttribute("class", "win_close");*/// 输出$dom->formatOutput = true;header('Content-Type:text/xml');echo $dom->saveXML();// 将文档表现形式放于book变量中//$book = $dom->saveXML();// 将文档输出为book.xml文件//$dom->save("humans.xml");/** <?xml version="1.0 encoding="UTF-8"?> <humans> <zhangying> <name>张映</name> <sex>男</sex> <old>28</old> </zhangying> <tank> <name>tank</name> <sex>男</sex> <old>28</old> </tank> </humans> **/
三、xml的读取
/* * xml的读取 * @author flyer0126 * @since 2012/4/27 */// 1. 利用simplexml_load_file读取简单的xml文件$humans = simplexml_load_file("humans.xml");foreach($humans as $key => $human){ echo $human->name."->".$human->sex."->".$human->old."\n";}/**张映->男->28tank->男->28**/// 2. 利用DOMDocument读取xml$dom = new DOMDocument();$dom->load("humans.xml");$humans = $dom->getElementsByTagName("humans");foreach($humans as $key=>$human){$names = $human->getElementsByTagName("name");$olds = $human->getElementsByTagName("old");$sexes = $human->getElementsByTagName("sex");foreach($names as $k=>$name){$name = $names->item($k)->nodeValue;$sex = $sexes->item($k)->nodeValue;$old = $olds->item($k)->nodeValue;echo "$name->$sex->$old\n";}}/**张映->男->28tank->男->28**/// 3. 利用正则来获取数据$xml = '';$f = fopen("humans.xml", "r");while($data = fread($f, 2096)){$xml .= $data;}fclose($f);preg_match_all('/\<humans\>(.*?)\<\/humans\>/s', $xml, $humans);foreach($humans[1] as $human){preg_match_all('/\<name\>(.*?)\<\/name\>/s', $human, $names);preg_match_all('/\<sex\><div>)本文来源gaodai.ma#com搞#代!码网_</div><strong>搞代gaodaima码</strong>;(.*?)\<\/sex\>/s', $human, $sexes);preg_match_all('/\<old\>(.*?)\<\/old\>/s', $human, $olds);}foreach($names[1] as $k=>$name){echo $names[1][$k].'-'.$sexes[1][$k].'-'.$olds[1][$k]."\n";}/**张映->男->28tank->男->28**/// 4. 利用XMLReader获取数据$reader = new XMLReader();$reader->open("humans.xml");$i = 1;while($reader->read()){if($reader->nodeType == XMLReader::TEXT){if($i%3){echo $reader->value;}else{echo $reader->value."\n";}$i++;}}/**张映男28tank男28**/