Frage zu Tutorial: "Einführung XML mittels SimpleXML und DOM"?

knabber

Grünschnabel
Hi,

habe eine Frage zu dem Tutorial.
Ich möchte einen Speziellen Datensatz ausgeben zb. also die DVD mit der "CollectionNumber=111".
Nach dem Tutorial kann ich entweder alle oder oben nur die erste DVD ausgeben.

Wie mache ich das mit der geziehlten Ausgabe?

Wäre sehr dankbar für Hilfe.




hier die XML:
PHP:
<Collection>
 <DVD>
   <IAD>000133</IAD>
   <UPC>00000-00133</UPC>
   <ProfileTimestamp>2004-08-05 16:10:09</ProfileTimestamp>
   <Title>The Hire - A Series of 8 Short Films</Title>
   <SortTitle>Hire</SortTitle>
   <Description>Collector&apos;s Edition</Description>
   <CollectionNumber>348</CollectionNumber>
 </DVD>
 <DVD>
   <IAD>000144</IAD>
   <UPC>00000-00144</UPC>
   <ProfileTimestamp>2004-08-05 16:10:09</ProfileTimestamp>
   <Title>Bullets over Broadway</Title>
   <SortTitle>Bullets</SortTitle>
   <Description>Collector&apos;s Edition</Description>
   <CollectionNumber>111</CollectionNumber>
 </DVD>
 </Collection>


und hier das PHP-script:
PHP:
<?php
 	$filename = 'test.xml';
 	
 	if(file_exists($filename)) {
 		$xml = simplexml_load_file($filename);
 		if($xml) {
 		  
 ?>
 		<table>
 			<tr>
 			 <td><?php echo $xml->DVD->Title ?></td>
 			</tr>
 			<tr>
 			 <td><?php echo $xml->DVD->CollectionNumber ?></td>
 			</tr>
 			<tr>
 			 <td><?php echo $xml->DVD->IAD ?></td>
 			</tr>
 		</table>
 <?php	
 			
 		} else {
 			echo '		<p>Die Datei names '. $filename .' konnte nicht geöffnet werden</p>';
 		}
 	}
 ?>
 
Punkt 4 hab ich mir natürlich auch schon durchgelesen dachte aber irgendwie das ich das irgendwie nicht brauche. hmm?

Hatte es aber trotzdem ausprobiert aber komme dort mit der Ausgabe nicht klar.
Irgendwie kapiere ich nicht wie ich dort z.b. nur das XML-tag "Title" ausgebe.

PHP:
<?php
 $doc = DOMDocument::load("test.xml");
 
 $xp = new domxpath($doc);
 $titles = $xp->query('DVD[CollectionNumber="111"]');
 foreach ($titles as $node) {
 	foreach($node->childNodes as $cnode) {
 		if($cnode->nodeType == 1) {
 		    print $cnode->nodeName .": ". $cnode->textContent . "\n";
 		}
 	}
 }
 ?>
 
Ok, denke ich bin jetzt drauf gekommen.

Bitte sag mir doch jetzt einer nur noch ob man das auch einfacher machen kann oder ob meine Lösung jetzt die richtige ist!

PHP:
<?php
 $doc = DOMDocument::load("test.xml");
 
 $xp = new domxpath($doc);
 $titles = $xp->query('DVD[CollectionNumber="111"]');
 
 foreach ($titles as $node) {
  foreach($node->childNodes as $cnode) {
   if($cnode->nodeName == Title) {
    print $cnode->nodeName .": ". $cnode->textContent . "\n";
   }
  }
 }
 
 
 ?>
 
Zurück