_
toggle menu eXmatrikulationsamt.de
online: 371 gäste

>PHP DomXPath die freaks sind gefragt

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 02 Sep 2010, 16:41
avatar
fuk da hataz
*********

Punkte: 15000
seit: 27.05.2003

gegeben ist folgende datei "test.html"

CODE
<html>
<body>

<div id='a'>
    AAA1 <img src="bild1.jpg">
</div>

<div id='a'>
    <div id='b'>
         BBB1 <img src="bild2.jpg">
    </div>
    AAA2 <img src="bild3.jpg">
</div>

<div id='a'>
    AAA3
</div>

</body>
</html>


ich will NUR die inhalte aus den divs mit der id=a herausfiltern, inklusive der dazugehörigen bilder. ich habe dafür eine php-datei, die folgendermaßen aussieht:

CODE
<?php
$dom = new DOMDocument();
$dom->loadHTMLFile('test.html');

$xpath = new DOMXPath($dom);

$ergebnisse = $xpath->query("//div[@id='a']");

foreach ($ergebnisse as $ergebnis) {
    echo $ergebnis->nodeValue ."<br>";
    }
?>



das ergebnis soll so aussehen:

AAA1 bild1.jpg
AAA2 bild3.jpg
AAA3


sieht aber so aus:

AAA1
BBB1
AAA2
AAA3




basic problem:

ich bekomme als resultat AUCH die text-inhalte der b-divs, will aber NUR die der a-divs ohne kinder!

advanced problem:

die bilder werden nicht mit ausgegeben. das ginge mit
CODE
echo '<img src="'.$ergebnis->getAttribute('src').'" border="0">';

einzeln, soll aber zusammen passieren. ich will ja die texte der a-divs und dahinter sofort das entsprechende bild.


hat da jemand vielleicht einen guten tip?


--------------------
onkelroman war hier
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 02 Sep 2010, 17:18
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Ich bilde mir ein, dass XPath 1.0 nicht mächtig genug ist, um "lass das Element so und so mal aus dem Ergebnis raus" zu spezifizieren.
Du könntest aber den umgekehrten Fall ausdrücken und zumindest mit //div[@id='a']/img schonmal nur die img Tags selektieren. Das geht auch irgendwie (jaja) mit dem Textinhalt der Node. Kann das Ding XPath 2.0? Dann könnten dir die Sequenzfunktionen vielleicht helfen.


--------------------
ProfilPM
AntwortenZitierenTOP
Beiträge
onkelroman   PHP DomXPath   02 Sep 2010, 16:41
onkelroman   ja, man kann mit hasChildNodes() abfragen, ob nach...   02 Sep 2010, 17:03
Stormi   Ginge auch //div[@id='a']/node()[not(@id=...   02 Sep 2010, 19:12
I.I   ja das geht auch ....   02 Sep 2010, 23:19
onkelroman   ich verzweifel hier grad. schaut euch das an, ich ...   01 Nov 2010, 14:03
onkelroman   ach.. ich hab den fehler. posts stehen innerhalb e...   01 Nov 2010, 14:16
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: