admin 发表于 2011-4-10 03:59:29

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]
查看完整版本: php读写xml实例