Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][PHP] Parsowanie XML
rasten
post
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Witam, mój skrypt dostaje taki oto XML z zewnętrznego serwisu:
  1. <RESP CONC='false'>
  2. <SEQ='4113' MID='1999919' STA='OK'>
  3. </RESP>
  4. OK

To co widać to jest wynik wyświetlenia takiej instrukcji: var_dump(htmlentities($t['result']));
Jak próbuje go zamienić na SimpleXML $simple = simplexml_load_string($result) dostaję errory w stylu:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : error parsing attribute name in
Warning: simplexml_load_string() [function.simplexml-load-string]: <SEQ='4113' MID='2000029' STA='OK'>

Czy to jest wogóle poprawny XML? i jak pozbyć się tego OK na końcu? Generalnie chodzi mi o to jak odczytać zawartość tego XML na swoje potrzeby, najlepiej tak żeby SimpleXML działało?
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat
Czy to jest wogóle poprawny XML?
Nie, nie jest to poprawny xml
http://www.w3schools.com/xml/
Go to the top of the page
+Quote Post
rasten
post
Post #3





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Hmm no to troszkę lipa. Jak najlepiej to sobie przeparsować? Bawić się w jakieś preg_machy, substringi czy może wywalić to 'OK' na końcu, a tą linijkę
  1. <SEQ='4113' MID='1999919' STA='OK'>
zamienić na
  1. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
i wrzucić do SimpleXml? Macie może inny pomysł?
Bo jaka będzie wydajność takiego skryptu przy kilku tysiącach linijek?

Ten post edytował rasten 12.12.2011, 13:53:52
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. <?xml version="1.0"?>
  2. <tests>
  3. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  4. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  5. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  6. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  7. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  8. <Test SEQ='4113' MID='1999919' STA='OK'></Test>
  9. </tests>


i tak będzie działać.
Go to the top of the page
+Quote Post
rasten
post
Post #5





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Dobra dzięki. Czyli będę go sobie przerabiał na poprawnego xml'a, ale jak ktoś ma jeszcze jakiś pomysł to słucham;)
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Spróbuj wczytać to jako HTML do DOMDocument - inny parser XML-a.
Go to the top of the page
+Quote Post
rasten
post
Post #7





Grupa: Zarejestrowani
Postów: 86
Pomógł: 6
Dołączył: 31.05.2010

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


Niestety w ten sposób też nie daje rady. Pozostaje mi przerobienie tak ja napisałem wyżej;/
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.09.2025 - 04:34