Posted by Chuy08 on 02/08/07 19:15
Given the following XML Doc
<Consumer>
<Programs>
<Program>
<Title>30 Year</Title>
<author>Juan Rodriguez</author>
<publisher>abc</publisher>
</Program>
<Program>
<Title>20 Year</Title>
<author>Albert Rodriguez</author>
<publisher>abc</publisher>
</Program>
<Program>
<Title>10 Year</Title>
<author>Jose Guzman</author>
<publisher>xyz</publisher>
</Program>
How could I construct a table like the following:
Title | Author |
ABC Publishing |
30 Year | Juan Rodriguez |
20 Year | Albert Rodriguez |
XYZ Publishing
10 Year | Jose Guzman |
Currently I can build a dynamic table using the following but I can't figure
out how to only print out the publisher once as a heading for all the
products that match it, and then when a new publisher is detected print a
new header and output all matching published products beneath that.
$file = 'results.xml';
// Loading the results into a new DomDocument
$dom1 = new DOMDocument('1.0', 'ISO-8859-1');
$dom1->load($file, LIBXML_NOBLANKS);
<?php
echo("<TR>");
echo("<TH></TH>");
echo("<TH>Title</TH>");
echo("<TH>Author</TH>");
echo("<TH>Publisher</TH>");
$root = $dom1->documentElement;
$title = $dom1->getElementsByTagName("Title");
$author = $dom1->getElementsByTagName("Author");
$publisher = $dom1->getElementsByTagName("Publisher");
$length = $title->length;
for ($x=0; $x < $length; $x++) {
echo "<TR><TD>".$title->item($x)->nodeValue."</TD>";
echo "<TD>".$author->item($x)->nodeValue."</TD>";
echo "<TD>".$publisher->item($x)->nodeValue."</TD></TR>";
The above code actually outputs
Title | Author | Publisher
[Back to original message]
|