Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML]Wyciąganie danych z pliku
Forum PHP.pl > Forum > PHP
Danon910
Witam!

Mam problem z wyciągnięciem potrzebnych danych z pliku xml, plik ma taką zawartość

Kod
<?xml version="1.0"?>
<player name="Danon" account="111111" exp="770738"></player>


Chciałbym z niego wyciągnąć name oraz exp. Próbuję wyciągnąć te dane przez "simplexml" lecz nie udaje mi się to, ponieważ wynik jest pusty.


Dzięki za pomoc
L00zak
w najgorszym wypadku:

  1. <?
  2. preg_match_all("|<player name=\"(.*)\"|U", $xml, $name);
  3. preg_match_all("|exp=\"(.*)\">|U", $xml, $exp);
  4. ?>
Danon910
Dzięki, dałoby rade z tego pliku XML http://wklej.org/hash/e2ec8409794/ wyciągnąć to wszystko co jest pomiędzy <!--// Instant \\--> <!--\\ End Instant //--> ?

Dzięki za pomoc!
!*!
  1. <?php
  2. $xml = simplexml_load_file('xml.xml');
  3. echo '<pre>';
  4. print_r($xml);
  5. print_r($xml['maxVoc']);
  6. ?>


Jak chcesz pobrać wszytko po kolei to policz dane count() i przepuść przez foreach.
Danon910
Ja chcę tylko to co jest w komentarzu <!--// Instant \\--> <!--\\ End Instant //-->, a nie wszystko :| Dasz rade przerobić to, by wyciągało to co jest w komentarzu <!--// Instant \\--> <!--\\ End Instant //--> ?
!*!
  1. <instant>
  2. <spell name="Light" words="utevo lux" maglv="0" mana="20" enabled="1"><vocation id="1" /><vocation id="2" /><vocation id="3" /><vocation id="4" /></spell>
  3. ....
  4. </instant>


  1. $xml->instant

Danon910
W tym problem, że nie mogę nic zmieniać w tym pliku XML, ponieważ jest on z silnika gry(jak zmienie to sie gra sypnie). Potrzebuje wyciągnąć z tych komentarzy.
!*!
Pobierasz plik przez file_get_contents(), zamieniasz komentarze na znacznik xml jak wyżej przez preg_replace() i operujesz na simplexml()
Danon910
Kod
<?php

    $sciezka = file_get_contents('spells.xml');
    
    $str1 = preg_replace('<!--// Instant \\-->', '<instant>', $sciezka);
    $str2 = preg_replace('<!--\\ End Instant //-->', '</instant>', $str1);
    
    $xml = simplexml_load_string($str2);
    
?>


Takie coś?
!*!
Tak. I nie musisz tworzyć nowej zmiennej str2, wystarczy jak będziesz operował na jednej, str1, ale to już szczegół.
Danon910
Jak teraz wyświetlić powiedzmy z 1 czaru name? Jakoś nie moge tego wyciagnac. :s

echo $xml->spell[0]['name'];
?
!*!
Już to napisałem wyżej, operuj na $xml->instant sprawdź co zawiera print_r
Danon910
Dzięki bardzo za pomoc smile.gif

#edit
Dlaczego wpisując "print_r($xml->instant);" wyświetla "SimpleXMLElement Object ( )" ?
!*!
Ponieważ odwołujesz się do obiektu, znacznik instant. Chcąc przeglądać zawartość lecisz ze znacznikiem dalej $xml->instant->kolejnyznacznik
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.