Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczytanie pełnej zawartości XML
Forum PHP.pl > Forum > PHP
set4812
W pracy szef dał mi duży plik XML produktów pewnej hurtownii. Miałem sprawdzić czy da się to zimportować do presty. Sposób znalazłem, ale mam problem z XML. Uzyłem SimpleXML, ale gdy tworzy obiekt to pomija tekst miedzy tagami który jest opisem produktu, a takie coś jest potrzebne.
Wklejam kawałek mego kodu XML
  1. <product id="30" currency="PLN" code_producer="M-1100/21">
  2. <producer id="1282294004" name="MAT lingerie"/>
  3. <category id="1214553882" xml:lang="pol" name="BIUSTONOSZE/Półusztywniane"/>
  4. <unit id="0" xml:lang="pol" name="szt."/><series id="4" xml:lang="pol" name="Basic Collection"/>
  5. <card url="http://b2b.tiffanie.pl/product-pol-30-Sofia-biustonosz-polusztywniany-M-1100-21.html"/>
  6. <description>
  7. <name xml:lang="eng">Sofia biustonosz półusztywniany M-1100/21</name>
  8. <name xml:lang="pol">Sofia biustonosz półusztywniany M-1100/21</name>
  9. <version name="czarny">
  10. <name xml:lang="eng">Sofia biustonosz półusztywniany M-1100/21</name>
  11. <name xml:lang="pol">czarny</name>
  12. </version>
  13. <long_desc xml:lang="eng">
  14. <span style="font-family: Tahoma, Geneva, sans-serif; color: #3f3229;">
  15. Delikatny biustonosz dla kobiet które cenią sobie komfort i wygodę. Biustonosz typu soft o perfekcyjnej konstrukcji pozwala zebrać biust jednocześnie doskonale, utrzymać go na miejscu. Miseczki zdobione są subtelnym kwiatowym haftem. Model posiada regulowane, odpinane ramiączka.
  16. </span>
  17. </long_desc>
  18. <long_desc xml:lang="pol">
  19. <span style="font-family: Tahoma, Geneva, sans-serif; color: #3f3229;">
  20. Delikatny biustonosz dla kobiet które cenią sobie komfort i wygodę. Biustonosz typu soft o perfekcyjnej konstrukcji pozwala zebrać biust jednocześnie doskonale, utrzymać go na miejscu. Miseczki zdobione są subtelnym kwiatowym haftem. Model posiada regulowane, odpinane ramiączka.
  21. </span>
  22. </long_desc></description>

Nie patrzcie na tagi niedomkniete , dałem kod z srodka który mnie najbardziej interesuje. Miałem taki rezulatat na SimpleXML
Kod
[description] => SimpleXMLElement Object
(
    [name] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [lang] => eng
                        )
                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [lang] => pol
                        )
                )
        )

    [long_desc] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [lang] => eng
                        )
                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [lang] => pol
                        )
                )
        )
)


Ma ktoś pomysł jak łatwo wyciągnąć dane z tego XML? Może byc konwersja na tablice.
timon27
Ja korzystałem z DOMDocument i tam można bez problemu pobrać wartość z pomiędzy tagów:

  1. $xml = new DOMDocument();
  2. $xml->load($plik);
  3. foreach($xml->getElementsByTagName('span') as $span)
  4. echo $span->nodeValue;


Atrybuty też są dostępne:

  1. foreach ($jakiś_tag->attributes as $attr)
  2. $jego_atrybuty[$attr->nodeName] = $attr->nodeValue;
  3.  


Więc całość bez problemu tak napiszesz.
Pyton_000
Jeżeli to ma być importer to polecam XMLReader. SimpleXML ładuje cały plik do pamięci, więc jeżeli będzie spory to skutecznie zapcha serwer.cha serwer.
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.