Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [xpath] pobranie węzła którego dzieci mają konkretny atrybut
joshrob
post 1.07.2008, 10:26:13
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.10.2006

Ostrzeżenie: (0%)
-----


Witam,

stawiam pierwsze kroki w XPath; proszę o pomoc lub podanie URL do tutorialu z dużą ilością przykładów, gdyż suche dokumentacje typu http://www.w3.org/TR/xpath do mnie nie przemawiają niestety.

Mam taką strukturę XML:

  1. <root>
  2. <parentnode>
  3. <payload>wanted node value</payload>
  4. <childnode attr="value">ignored child value</childnode>
  5. </parentnode>
  6.  
  7. <parentnode>
  8. <payload>unwanted node value</payload>
  9. <childnode>ignored child value with no attr</childnode>
  10. </parentnode>
  11.  
  12. <parentnode>
  13. <payload>wanted node value</payload>
  14. <childnode attr="value">ignored child value</childnode>
  15. </parentnode>
  16.  
  17. <parentnode>
  18. <payload>unwanted node value</payload>
  19. <childnode attr="unwantedvalue">ignored child value</childnode>
  20. </parentnode>
  21.  
  22. </root>


Jakie zapytanie xpath zwróci payload węzłów parentnode których wartość atrybutu attr dziecka childnode wynosi value?

//root/parentnode[contains(child::childnode[@attr = "value"])] ?

Pozdrawiam,
J.
Go to the top of the page
+Quote Post
Whisller
post 24.08.2008, 22:02:34
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 5
Dołączył: 29.03.2006
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Co prawda XPath dopiero co poznaję ale Twój problem rozwiązałem w ten sposób.

// Edit - zmieniłem trochę $query oraz kod odczytujący

  1. <?php
  2. $dom = new DOMDocument();
  3. $dom->load('f.xml');
  4.  
  5. $xpath = new DOMXPath($dom);
  6.  
  7. $query = "//root/parentnode/childnode[attribute::attr='value']/../payload";
  8.  
  9. $nodes = $xpath->query($query);
  10.  
  11. foreach( $nodes as $node ) {
  12.  echo $node->nodeValue;
  13. }
  14.  
  15. ?>


Ten post edytował Whisller 24.08.2008, 22:18:21


--------------------
Blog | Strona www | wicia.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 06:32