--TEST--
Test 1: Accessing single node
--EXTENSIONS--
dom
--FILE--
loadxml($xmlstr);
if(!$dom) {
echo "Error while parsing the document\n";
exit;
}
// children() of of document would result in a memleak
//$children = $dom->children();
//print_node_list($children);
echo "--------- root\n";
$rootnode = $dom->documentElement;
print_node($rootnode);
echo "--------- children of root\n";
$children = $rootnode->childNodes;
print_node_list($children);
// The last node should be identical with the last entry in the children array
echo "--------- last\n";
$last = $rootnode->lastChild;
print_node($last);
// The parent of this last node is the root again
echo "--------- parent\n";
$parent = $last->parentNode;
print_node($parent);
// The children of this parent are the same children as one above
echo "--------- children of parent\n";
$children = $parent->childNodes;
print_node_list($children);
echo "--------- creating a new attribute\n";
//This is worthless
//$attr = $dom->createAttribute("src", "picture.gif");
//print_r($attr);
//$rootnode->set_attributeNode($attr);
$attr = $rootnode->setAttribute("src", "picture.gif");
$attr = $rootnode->getAttribute("src");
print_r($attr);
print "\n";
echo "--------- Get Attribute Node\n";
$attr = $rootnode->getAttributeNode("src");
print_node($attr);
echo "--------- Remove Attribute Node\n";
$attr = $rootnode->removeAttribute("src");
print "Removed " . $attr . " attributes.\n";
echo "--------- attributes of rootnode\n";
$attrs = $rootnode->attributes;
print_node_list($attrs);
echo "--------- children of an attribute\n";
$children = $attrs->item(0)->childNodes;
print_node_list($children);
echo "--------- Add child to root\n";
$myelement = new domElement("Silly", "Symphony");
$newchild = $rootnode->appendChild($myelement);
print_node($newchild);
print $dom->saveXML();
print "\n";
echo "--------- Find element by tagname\n";
echo " Using dom\n";
$children = $dom->getElementsByTagname("Silly");
print_node_list($children);
echo " Using elem\n";
$children = $rootnode->getElementsByTagName("Silly");
print_node_list($children);
echo "--------- Unlink Node\n";
print_node($children->item(0));
$rootnode->removeChild($children->item(0));
print_node_list($rootnode->childNodes);
print $dom->savexml();
echo "--------- Find element by id\n";
print ("Not implemented\n");
echo "--------- Check various node_name return values\n";
print ("Not needed\n");
?>
--EXPECT--
Test 1: accessing single nodes from php
--------- root
Node Name: chapter
Node Type: 1
Num Children: 4
--------- children of root
Node Name: title
Node Type: 1
Num Children: 1
Node Content: Title
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
Node Name: para
Node Type: 1
Num Children: 7
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
--------- last
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
--------- parent
Node Name: chapter
Node Type: 1
Num Children: 4
--------- children of parent
Node Name: title
Node Type: 1
Num Children: 1
Node Content: Title
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
Node Name: para
Node Type: 1
Num Children: 7
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
--------- creating a new attribute
picture.gif
--------- Get Attribute Node
Node Name: src
Node Type: 2
Num Children: 1
Node Content: picture.gif
--------- Remove Attribute Node
Removed 1 attributes.
--------- attributes of rootnode
Node Name: language
Node Type: 2
Num Children: 1
Node Content: en
--------- children of an attribute
Node Name: #text
Node Type: 3
Num Children: 0
Node Content: en
--------- Add child to root
Node Name: Silly
Node Type: 1
Num Children: 1
Node Content: Symphony
]>
Title
&sp;
a1b1c1
a2c2
a3b3c3
Symphony
--------- Find element by tagname
Using dom
Node Name: Silly
Node Type: 1
Num Children: 1
Node Content: Symphony
Using elem
Node Name: Silly
Node Type: 1
Num Children: 1
Node Content: Symphony
--------- Unlink Node
Node Name: Silly
Node Type: 1
Num Children: 1
Node Content: Symphony
Node Name: title
Node Type: 1
Num Children: 1
Node Content: Title
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
Node Name: para
Node Type: 1
Num Children: 7
Node Name: #text
Node Type: 3
Num Children: 0
Node Content:
]>
Title
&sp;
a1b1c1
a2c2
a3b3c3
--------- Find element by id
Not implemented
--------- Check various node_name return values
Not needed