Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML]Wyciąganie danych z pliku, dzięki za pomoc
Danon910
post 29.12.2012, 09:17:11
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


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
Go to the top of the page
+Quote Post
L00zak
post 29.12.2012, 13:59:52
Post #2





Grupa: Zarejestrowani
Postów: 58
Pomógł: 5
Dołączył: 2.05.2006

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


w najgorszym wypadku:

  1. <?
  2. preg_match_all("|<player name=\"(.*)\"|U", $xml, $name);
  3. preg_match_all("|exp=\"(.*)\">|U", $xml, $exp);
  4. ?>
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 12:00:16
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


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!
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 12:26:10
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  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.

Ten post edytował !*! 31.12.2012, 12:31:42


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 12:40:56
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


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 //--> ?
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 12:47:35
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  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



--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 12:49:54
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


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.
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 12:52:49
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Pobierasz plik przez file_get_contents(), zamieniasz komentarze na znacznik xml jak wyżej przez preg_replace() i operujesz na simplexml()


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 13:05:49
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


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ś?

Ten post edytował Danon910 31.12.2012, 13:09:29
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 13:09:19
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak. I nie musisz tworzyć nowej zmiennej str2, wystarczy jak będziesz operował na jednej, str1, ale to już szczegół.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 13:14:02
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


Jak teraz wyświetlić powiedzmy z 1 czaru name? Jakoś nie moge tego wyciagnac. :s

echo $xml->spell[0]['name'];
?

Ten post edytował Danon910 31.12.2012, 13:16:17
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 13:15:17
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Już to napisałem wyżej, operuj na $xml->instant sprawdź co zawiera print_r


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Danon910
post 31.12.2012, 13:19:20
Post #13





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.12.2011

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


Dzięki bardzo za pomoc smile.gif

#edit
Dlaczego wpisując "print_r($xml->instant);" wyświetla "SimpleXMLElement Object ( )" ?

Ten post edytował Danon910 31.12.2012, 13:32:45
Go to the top of the page
+Quote Post
!*!
post 31.12.2012, 13:49:42
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Ponieważ odwołujesz się do obiektu, znacznik instant. Chcąc przeglądać zawartość lecisz ze znacznikiem dalej $xml->instant->kolejnyznacznik


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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: 25.04.2024 - 01:04