Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XML] Odczyt pliku XML
Forum PHP.pl > Forum > Przedszkole
jg44
Witam,
mam pewien problem z odczytem pliku XML. Plik ten pochodzi z programu Wireshark, i potrzebuję z niego wyciągnąć tylko CZASY przepływów między kolejnymi pakietami. Plik ten ma następującą strukturę:
  1. <?xml version="1.0"?>
  2. <psml version="0" creator="wireshark/1.8.3">
  3. <structure>
  4. <section>No.</section>
  5. <section>Time</section>
  6. <section>Source</section>
  7. <section>Destination</section>
  8. <section>Protocol</section>
  9. <section>Length</section>
  10. <section>Info</section>
  11. </structure>
  12.  
  13. <packet>
  14. <section>1</section>
  15. <section>0.000000000</section>
  16. <section>10.0.2.15</section>
  17. <section>172.16.0.1</section>
  18. <section>DNS</section>
  19. <section>73</section>
  20. <section>Standard query 0x2dfd A www.apple.com</section>
  21. </packet>
  22.  
  23. <packet>
  24. <section>2</section>
  25. <section>1.002168000</section>
  26. <section>10.0.2.15</section>
  27. <section>172.16.0.1</section>
  28. <section>DNS</section>
  29. <section>73</section>
  30. <section>Standard query 0x2dfd A www.apple.com</section>
  31. </packet>
  32.  
  33. <packet>
  34. <section>3</section>
  35. <section>2.004533000</section>
  36. <section>10.0.2.15</section>
  37. <section>172.16.0.1</section>
  38. <section>DNS</section>
  39. <section>73</section>
  40. <section>Standard query 0x2dfd A www.apple.com</section>
  41. </packet>
  42.  
  43. ...

Wspomniane czasy są ukryte między znacznikami <section></section> na "drugiej pozycji" w części <packet></packet> (czyli w tym przypadku są to: 0.000000000; 1.002168000; 2.004533000; itd.). Normalnie z wyciągnięciem tych czasów problemu by nie było, gdyby miały one jakiś swój znacznik, a tutaj, dla każdej informacji w <packet> są te same znaczniki (jak widać zawsze <section>, mimo że tam są przechowywane różne informacje, m.in.: LP; czasy, IP nadawcy, IP odbiorcy, itd.). Takim kodem nie da rady wyciągnąć tych czasów (wyciąga tylko informację z pierwszego <section>, czyli LP.), może ktoś pomóc, jak to zrobić? Nie mam doświadczenia, bawię się XMLem pierwszy raz.
  1. $pakiety = simplexml_load_file('dane/pakiety.xml');
  2.  
  3. foreach($pakiety -> packet as $sec)
  4. {
  5. echo 'Czas: '.$sec -> section.'';
  6. echo '<hr/>';
  7. }

Z góry dziękuję
pozdrawiam.
CuteOne
  1. foreach($pakiety -> packet as $sec)
  2. {
  3. echo '<pre>';print_r($sec->children());
  4. }
jg44
No i rewelacja, dziękuję Ci bardzo. smile.gif
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.