Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP] SimpleXML - jak dostać się do środka
Forum PHP.pl > Forum > XML, AJAX > XML
Marcstee
Hej

Mam dość rozbudowany plik XML i musze go przerobić. Załóżmy że w uproszczeniu wygląda tak:

  1. <nod1>
  2. <xxx>
  3. </xxx>
  4. <yyy>
  5. <aaa>
  6. <bbb>
  7. <ccc>
  8. </ccc>
  9. </bbb>
  10. </aaa>
  11. <aaa>
  12. <bbb>
  13. <ccc>
  14. </ccc>
  15. </bbb>
  16. </aaa>
  17. </yyy>
  18. </nod1>


I teraz musze sobie zapisać do jakieś zmiennej wszystko co jest w <aaa> i potem na tym pracować (zmieniać na przykład bbb na "table" i wywalać atrybuty itp). Jak jednak zapisąć to co jest między tymi aaa do zmiennej?? Bo próbuje z tym simpleXML ale nie wychodzi za cholere.

Bardzo prosze o jakąś pomoc
tvister
Cytat
Jak jednak zapisąć to co jest między tymi aaa do zmiennej??


Możesz pobawić się preg_match .
Druga metoda, która nie wiem czy zadziała i raczej nie będzie zbyt uniwersalna(przed chwilą wymyśliłem) :
strip_tags($tekst,'<aaa>,<bbb>,<ccc>') smile.gif
Marcstee
Poki co jakoś wyciąłem sobie to ale w mało praktyczny sposób (substringiem). Fajnie jednak było by mieć tablice w której jest coś takiego:
$tab[0] => to co jest miedzy pierwszymi aaa
$tab[1] => to co jest miedzy drugimi aaa
itd. Dzieki temu ułatwiło by to całość tego co musze zrobić i to znacząco. Czy php ma jakies wbudowane funkcje do tego celu? Czy nie bardzo. Bo jakoś nie wiem jak się zabrać za to aby działało tak jak opisałem.
230005
Dam ci kod, który zaproponowałem w innym temacie:

  1.  
  2. $array = array();
  3.  
  4. $xml = new DOMDocument();
  5. //to niżej to po to żeby nie uwzględniał białych znaków przy czytaniu
  6. $xml->preserveWhiteSpace = false;
  7. $xml->Load('xml.xml');
  8.  
  9. $xp = new DOMXpath($xml);
  10. $names = $xp->query('/*');
  11.  
  12. foreach($names as $vals) {
  13. $array[] = $vals->nodeValue;
  14. }


Poczytaj sobie w manualu o DOMDocument i DOMXpath.
piotrooo89
DOMDocument niby fajny ale... SimpleXML realizuje to o wiele szybciej.
230005
Bardzo możliwe, ale czy jest tak wygodne? Poza tym dopóki plik nie będzie ważył nie wiadomo ile, to czy ta szybkość jest tak istotna?
piotrooo89
wygodne jest bo SimpleXML sam w sobie jest prosty. Czy ja wiem czy będzie to aż tak mało? DOM wczytuje wszystkie gałęzie i później na nich działa, a za pomocą Simple odnosisz się tylko do wybranych.
Marcstee
Wiecie... wszystko fajnie dopóki nie zależy nam tylko na wartościach zawartych między znacznikami. A mi zależy aby mieć wycięte i zapisane w jakiś string wartości wraz z znacznikami. Żeby ten string wyglądał jakoś tak: "<bbb><ccc>WARTOSC</ccc></bbb>".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.