_
toggle menu eXmatrikulationsamt.de
online: 366 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, 19:12
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Ginge auch //div[@id='a']/node()[not(@id='b')]? Ansonsten taugt die Lösung nicht allzuviel.



--------------------
ProfilPM
AntwortenZitierenTOP
post 02 Sep 2010, 19:18
avatar
Voll Laser
*******

Punkte: 1430
seit: 21.08.2008

Zitat(Stormi @ 02 Sep 2010, 19:12)
Ginge auch //div[@id='a']/node()[not(@id='b')]? Ansonsten taugt die Lösung nicht allzuviel.
*


? Klar taugt die, für sein Beispiel oben (außerdem ist meine Lösung allgemeiner, weil sie auch andere divs mit id weglässt). Hab geschrieben er kann sich die Bedingungen anpassen wie er will. Du bist ja anscheind nicht mal zu einer Lösung gekommen.

Dieser Beitrag wurde von I.I: 02 Sep 2010, 19:32 bearbeitet


--------------------
Verein: USV TU Dresden

--Film Fan--
--Poker Fan--
--Billard Fan--
--Schach Fan--
--Fußball Fan--
--Rennrad Fan--
--Triathlon Fan--
--Volleyball Fan--

--Luiz Bonfa Fan--
--Eliane Elias Fan--
--Scott Joplin Fan--
--The Beatles Fan--
--Woody Allen Fan--
--Bodo Wartke Fan--
--Joao Gilberto Fan--
--Monty Python Fan--
--Volker Pispers Fan--
--Ennio Morricone Fan--
--Alfred Hitchcock Fan--
--Georg Schramm Fan--
--Kool & The Gang Fan--
--Earth, Wind & Fire Fan--

--V for Vendetta Fan--
--Das Leben des Brian Fan--
--Jackie Brown Soundtrack Fan--
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: