php-src/tests/testdom
2000-02-17 15:05:24 +00:00

83 lines
2.3 KiB
Plaintext

<?php
function output_node($node, $level=0) {
switch($node->type) {
case XML_ELEMENT_NODE:
for($i=0; $i<$level; $i++)
echo " ";
echo "<".$node->name;
$attributes = $node->attributes();
if(is_array($attributes))
for(reset($attributes); $attrname = key($attributes); next($attributes))
echo " ".$attrname."=".$node->getattr($attrname);
echo ">\n";
$children = $node->children();
for($i=0; $i < count($children); $i++)
output_node($children[$i], $level+1);
for($i=0; $i<$level; $i++)
echo " ";
echo "</".$node->name.">\n";
break;
case XML_TEXT_NODE:
for($i=0; $i<$level; $i++)
echo " ";
echo $node->content;
echo "\n";
break;
}
}
function list_attr($node) {
$attr = domxml_attributes($node);
for(reset($attr); $key = key($attr); next($attr)) {
echo $key."=".$attr[$key]."\n";
}
}
$xmlstr = "<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'>
<chapter language='en'><title language='en'>Title</title>
<para language='ge'>
<informaltable language='sp'>
<tgroup cols='3'>
<tbody>
<row><entry>a1</entry><entry morerows='1'>b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
<row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</chapter> ";
/* The following code traverses the xml tree node by node
by using the methods of the xmlnode object
*/
echo "Test 1: accessing single nodes from php\n";
$dom = xmldoc($xmlstr);
echo "XML Version: ".$dom->version."\n";
$dtd = $dom->dtd();
$rootnode = $dom->root();
output_node($rootnode);
/* This one creates a dom tree made of php objects */
echo "Test 2: creating a tree with php objects\n";
$dom = xmltree($xmlstr);
var_dump($dom);
echo $dom->root->name;
echo "\n";
/* The following builds a xml document from scratch */
echo "Test 3: building a xml document from scratch\n";
$doc = new_xmldoc("1.0");
$root = $doc->add_root("HTML");
$head = $root->new_child("HEAD", "");
$head->new_child("TITLE", "Hier der Titel");
$body = $root->new_child("BODY", "");
$table = $body->new_child("TABLE", "");
$table->setattr("WIDTH", "100%");
$table->new_child("TR", " ");
echo $doc->dumpmem();
?>