php读写xml实例
library.xml:<?xml version="1.0" encoding="gb2312"?>
<root>
<groups>
<group gid="1">super</group>
<group gid="2">admin</group>
<group gid="3">change</group>
<group gid="4">program</group>
</groups>
<users>
<user>
<name>Apache 2</name>
<author>Peter Wainwright</author>
<publisher>Wrox</publisher>
<group>1</group>
</user>
<user>
<name>Advanced PHP Programming</name>
<author>George Schlossnagle</author>
<publisher>Developer Library</publisher>
<group>1</group>
<group>3</group>
</user>
<user>
<name>Visual FoxPro 6 - Programmers Guide</name>
<author>Eric Stroo</author>
<publisher>Microsoft Press</publisher>
<group>2</group>
</user>
<user>
<name>Mastering Java 2</name>
<author>John Zukowski</author>
<publisher>Sybex</publisher>
<group>4</group>
</user>
</users>
</root>
/**********************************************/
readlibrary.php:
<?php
$xml = new DOMDocument('1.0');
$xml->load( 'library.xml' );
$groups = array();
$XMLGroups = $xml->getElementsByTagName('groups')->item(0);
foreach($XMLGroups->getElementsByTagName('group') as $groupNode) {
/*注意我们是如何得到属性的*/
$gid = $groupNode->getAttribute('gid');
$groups[$gid] = $groupNode->firstChild->nodeValue;
}
?>
<html>
<head>
<title>XML Library</title>
</head>
<body>
<?
foreach($xml->getElementsBytagName('user') as $user):
$name = $user->getElementsByTagName('name')->item(0)->firstChild->nodeValue;
$author = $user->getElementsByTagName('author')->item(0)->firstChild->nodeValue;
$userCategories = $user->getElementsByTagName('group');
$catList = '';
foreach($userCategories as $category) {
$catList .= $groups[$category->firstChild->nodeValue] . ', ';
}
$catList = substr($catList, 0, -2); ?>
<!--
<div>
<h2><?php echo($name) ?></h2>
<b>Author:</b>: <?php echo($author) ?></br>
<b>group: </b>: <?php echo($catList) ?></br>
</div>
-->
<?php
//echo($name ." - " . $author. " - ". $catList ."<br>\n" );
echo($name ." || " . $catList ."<br>\n" );
endforeach; ?>
</html>
/************************************/
writelibrary.php:
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( "root" );
$doc->appendChild( $r );
setGroup();
setUser();
echo $doc->saveXML();
$doc->save("book1.xml");
function setGroup()
{
global $doc, $r;
$groups = array();
$groups [] = array(
'id' => '1',
'name' => 'Jack',
);
$groups [] = array(
'id' => '2',
'name' => 'Herrington',
);
$groups [] = array(
'id' => '3',
'name' => 'Hello',
);
$b = $doc->createElement( "groups" );
foreach( $groups as $group )
{
$grp = $doc->createElement( "group" );
$grp->appendChild( $doc->createTextNode( $group['name'] ) );
// create attribute node
$id = $doc->createAttribute("gid");
$grp->appendChild($id);
$idValue = $doc->createTextNode( $group['id'] );
$id->appendChild($idValue);
$b->appendChild( $grp );
}
$r->appendChild( $b );
}
function setUser()
{
global $doc, $r;
$users [] = array(
'title' => 'PHP Hacks',
'author' => 'Jack Herrington',
'publisher' => "O'Reilly"
);
$users [] = array(
'title' => 'Podcasting Hacks',
'author' => 'Jack Herrington',
'publisher' => "O'Reilly"
);
$u = $doc->createElement( "users" );
$doc->appendChild( $u );
foreach( $users as $user )
{
$b = $doc->createElement( "user" );
$author = $doc->createElement( "author" );
$author->appendChild( $doc->createTextNode( $user['author'] ) );
$b->appendChild( $author );
$title = $doc->createElement( "title" );
$title->appendChild( $doc->createTextNode( $user['title'] ) );
$b->appendChild( $title );
$publisher = $doc->createElement( "publisher" );
$publisher->appendChild( $doc->createTextNode( $user['publisher'] ) );
$b->appendChild( $publisher );
$u->appendChild( $b );
}
$r->appendChild( $u );
}
?>
页:
[1]