Pyh.conf’25: a new PHP conference for the Russian-speaking community

Voting

: one plus two?
(Example: nine)

The Note You're Voting On

itari
17 years ago
<?php
function parseXML($node,$seq,$path) {
global
$oldpath;
if (!
$node->read())
return;
if (
$node->nodeType != 15) {
print
'<br/>'.$node->depth;
print
'-'.$seq++;
print
' '.$path.'/'.($node->nodeType==3?'text() = ':$node->name);
print
$node->value;
if (
$node->hasAttributes) {
print
' [hasAttributes: ';
while (
$node->moveToNextAttribute()) print '@'.$node->name.' = '.$node->value.' ';
print
']';
}
if (
$node->nodeType == 1) {
$oldpath=$path;
$path.='/'.$node->name;
}
parseXML($node,$seq,$path);
}
else
parseXML($node,$seq,$oldpath);
}

$source = "<tag1>this<tag2 id='4' name='foo'>is</tag2>a<tag2 id='5'>common</tag2>record</tag1>";
$xml = new XMLReader();
$xml->XML($source);
print
htmlspecialchars($source).'<br/>';
parseXML($xml,0,'');
?>

Output:

<tag1>this<tag2 id='4' name='foo'>is</tag2>a<tag2 id='5'>common</tag2>record</tag1>

0-0 /tag1
1-1 /tag1/text() = this
1-2 /tag1/tag2 [hasAttributes: @id = 4 @name = foo ]
2-3 /tag1/text() = is
1-4 /text() = a
1-5 /tag2 [hasAttributes: @id = 5 ]
2-6 /text() = common
1-7 /text() = record

<< Back to user notes page

To Top