Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][XML] Wczytanie pliku XML na ekran, Jak wczytać plik XML
8_pasarzer_NOSTR...
post 10.02.2015, 13:31:04
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Proszę o pomoc z wczytaniem takiego XML, bo nie daje rady.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Rozkaz version="1" nazwaJednostki="Urząd Miasta" jednostka="2121" dataOd="2014-12-11T09:54:35.0" dataDo="2014-12-11T10:01:24.0" dataUtworzenia="2014-12-11T10:01:24.0" xmlns="http://www.on.pl" xmlns:ms="http://www.on.pl" xmlns:sl="http://www.on.pl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.on.pl">
  3. <ms:Rozkazy ID="0001">
  4.  
  5. <ms:Sygnatura wydzial="I" repertorium="C" nr="10" rok="2012"/></ms:Sygnatura>
  6. <ms:DataWpisu>2014-12-11</ms:DataWpisu>
  7. <ms:DataZarzadzenia>2014-12-11</ms:DataZarzadzenia>
  8.  
  9. <ms:Osoba ID="397082">
  10. <ms:Imie>Pingwin</ms:Imie>
  11. <ms:Nazwisko>Kowalski</ms:Nazwisko>
  12. <ms:Plec>Mężczyzna</ms:Plec>
  13. <ms:AdresyOsoby>
  14. <ms:AdresKorespondencyjny ulica="ul. Wielka" nr_domu="1" nr_mieszkania="33" miejscowosc="Wrocław" poczta="Wrocław" kod="53-333" wojewodztwo="dolnośląskie" kraj="Polska"/>
  15. </ms:AdresyOsoby>
  16. <ms:PESEL>71121212121</ms:PESEL>
  17. <ms:ImieOjca>Marian</ms:ImieOjca>
  18. <ms:DataUrodzenia>1971-12-12</ms:DataUrodzenia>
  19. <ms:MiejsceUrodzenia>Zieliniec</ms:MiejsceUrodzenia>
  20. <ms:Obywatelstwo>Polska</ms:Obywatelstwo>
  21. </ms:Osoba>
  22.  
  23. <ms:Uwagirozkazu>niebezpieczny</ms:Uwagirozkazu>
  24. <ms:Instytucja ID="737" ma_osobowosc_prawna="false" typ="Sąd"></ms:Instytucja>
  25. <ms:Sprawa>ważna</ms:Sprawa>
  26.  
  27. </ms:Rozkazy>
  28. </Rozkaz>


W jaki sposób wczytać taki plik by do zmiennej zaciągnąć np. PESEL osoby. W jakis sposób wyciągnąć wszystkie dane do zmiennych. Żaden sposób, który znalazłem w necie mi nie poszedł.
Proszę o pomoc.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post 10.02.2015, 13:35:37
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://php.net/manual/en/book.simplexml.php
A jak masz problem z konkretnym kodem, to podaj ten kod


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 10.02.2015, 13:49:12
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


A możesz napisać mi jak pobrać PESEL z tego XML. Sam sobie resztę wyciągnę.

Próbowałem tak:
  1. $xml = simplexml_load_file($plik);
  2. $oko= $xml->Rozkazy->PESEL;
  3. echo $oko;


I nic. Nie wiem jak odnieść się do konkretnego elementu. A plik mam nie z bazy danych lecz wysyłam go za pomocą formularza postem. Wcześniej wskazuje go z dysku. Bardzo dużo przykładow jest na funkcji simplexml_load_string($plik); a ja chce na file.
Go to the top of the page
+Quote Post
nospor
post 10.02.2015, 13:52:12
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Bardzo dużo przykładow jest na funkcji simplexml_load_string($plik); a ja chce na file.
Ale do danych w XML odwolujesz sie tak samo, niezaleznie czy to z pliku czy z tekstu...
Patrzyles w oogole czy wczytalo ci ten plik? Nie podajesz przypadkiem znowu złej ścieżki do niego jak ostatnio?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 10.02.2015, 21:27:14
Post #5





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Pamiętasz widzę dobrze, ostatnio miałem biednego XML i dałęm sobie z nim rade. teraz mam kolosa :-)

  1. $xml = simplexml_load_file($plik);
  2.  
  3. $xml->getName();
  4.  
  5. // gdy dam print_r($xml). Wypali mi tablice Rozkaz tj. <Rozkaz version="1" nazwaJednostki="Urząd Miasta" jednostka="2121" dataOd="2014-12-11T09:54:35.0" dataDo="2014-12-11T10:01:24.0" dataUtworzenia="2014-12-11T10:01:24.0" xmlns="http://www.on.pl" xmlns:ms="http://www.on.pl" xmlns:sl="http://www.on.pl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.on.pl">
  6.  
  7. // Ale za chiny nie mogę dostać sie zniżej, do pozostałych konusów.
  8.  
  9. foreach ($xml->children() as $child)
  10. {echo $child;}
  11. // też nic


Kto jeszcze pomoże ?
Go to the top of the page
+Quote Post
Pyton_000
post 10.02.2015, 23:15:42
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


echo (string)$child;
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 11.02.2015, 12:53:12
Post #7





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Nic, pusto.
Go to the top of the page
+Quote Post
Pyton_000
post 11.02.2015, 13:06:56
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Bo masz Namespace ustawione

  1. <?php
  2.  
  3. $xml = simplexml_load_file('./data.xml');
  4. $ns = $xml->getNamespaces(true);
  5. foreach ($xml->children($ns['ms']) as $child)
  6. {
  7. echo '<pre>'; var_dump($child); echo'</pre>';die(__FILE__ . ': '.__LINE__);
  8. }
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 12.02.2015, 11:55:02
Post #9





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Dzieki, coś ruszyło. Jakbyś był jeszcze tak miły, to w jaki sposób można odnieść się do konkretnego elementu tablicy $child. Np. Jak wypisać sam PESEL z tych danych.
Go to the top of the page
+Quote Post
robertpiaty
post 12.02.2015, 20:41:30
Post #10





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Poczytaj o xpath. A tu masz jak użyć xpath http://php.net/manual/en/simplexmlelement.xpath.php

Ten post edytował robertpiaty 12.02.2015, 20:42:04


--------------------
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 12.02.2015, 21:35:14
Post #11





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


możesz podać mi gotowe rozwiązanie jak wyciągnąć ten pesel. Bo w manualu gdzie mnie wysłałeś nie ma dokładnie takiego przykładu jak mój. Jutro w pracy oczywiście pokombinuje ale jakbyś był miły byłbym wdzięczny.
Go to the top of the page
+Quote Post
robertpiaty
post 12.02.2015, 22:24:30
Post #12





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Dokładnie tego XPATH-a nie pamiętam bo dawno nie używałem. Spróbuj coś w ten deseń:
  1. $xml = new SimpleXMLElement($string);
  2. $data = $xml->xpath('//ms:PESEL');


Dostajesz tablicę z obiektami SimpleXMLElement. Jak je wyświetlić to jużjest w tym linku co wcześniej podałem


--------------------
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 13.02.2015, 10:48:33
Post #13





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Wiec dałem tak :

  1. foreach ($xml->children($ns['ms']) as $child)
  2. {
  3.  
  4. echo '<pre>'; var_dump($child); echo'</pre>';die(__FILE__ . ': '.__LINE__);
  5. }


I dostałem tablice $child, skróciłęm ją żeby nie była zbyt wielka.

  1. SimpleXMLElement Object ([Osoba] => SimpleXMLElement Object ( [Imie] => Pingwin [Nazwisko] => Kowalski [Plec] => Mężczyzna [AdresyOsoby] => SimpleXMLElement Object ( [AdresKorespondencyjny] => SimpleXMLElement Object ( ) ) [PESEL] => 71121212121[ImieOjca] => Marian [DataUrodzenia] => 1971-12-12 [MiejsceUrodzenia] => Zieliniec [Obywatelstwo] => Polska [AdresyInstytucji] => SimpleXMLElement Object ( [Adres] => SimpleXMLElement Object ( ) ) ) [Dokument] => SimpleXMLElement Object ( [DataSporzadzenia] => 2014-12-11 [Nazwa] => Rozkaz)


Próbowałem dostać sie do elementów poprzez : $data = $xml->xpath('//ms:PESEL'); i nie działa. Jakby ktoś mi pomógł jak odnosić się do poszczególnych elementów tej tablicy i ewentualnie do ich atrybutów jeśli są np.

  1. <ms:Sygnatura wydzial="I" repertorium="C" nr="10" rok="2012"/></ms:Sygnatura>
Go to the top of the page
+Quote Post
Pyton_000
post 13.02.2015, 13:45:15
Post #14





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. echo '<pre>'; print_r((string)$child->Osoba->PESEL); echo'</pre>';die(__FILE__ . ': '.__LINE__);
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 16.02.2015, 09:50:24
Post #15





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Dzieki Pyton, jestes wielki!

A podpowiedz mi jeszcze jak dobrać się do tego typu argumentów

  1. <ms:Rozkazy ID="0001">
  2. <ms:Sygnatura wydzial="I" repertorium="C" nr="10" rok="2012"/>


Chodzi mi o ID="0001" oraz wydzial="I", repetytorium="C" itp.
Go to the top of the page
+Quote Post
Pyton_000
post 16.02.2015, 12:22:43
Post #16





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. echo (string)$xml->Sygnaturka['wydzial'];
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 16.02.2015, 15:14:50
Post #17





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Nie poszło.

Przy var_dump($child) pokazuje taki zapis.

  1. object (SimpleXMLelement)#4 (19)
  2. {
  3. ["Sygnatura"]=>
  4. }
Go to the top of the page
+Quote Post
Pyton_000
post 16.02.2015, 15:38:51
Post #18





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pokaż kod...
Go to the top of the page
+Quote Post
8_pasarzer_NOSTR...
post 17.02.2015, 07:12:13
Post #19





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 5.11.2009

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


Kod

XML, skróciłem dla dobra pokazu

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <DoSynchronizacji version="1" nazwaJednostki="xxx" jednostka="xx" dataOd="2014-12-11T09:54:35.0" dataDo="2014-12-11T10:01:24.0" dataUtworzenia="2014-12-11T10:01:24.0" xmlns="http://www.o9.pl" xmlns:ms="http://www.ms.gov.pl" xmlns:sl="http://www.o9.pl" xmlns:xsi="http://www.w9.org" xsi:schemaLocation="http://www.o11.pl">
  3. <ms:Rozkaz ID="00018814-DEAD-FEBA-0002-00000000000F">
  4. <ms:Sygnatura wydzial="I" repertorium="C" nr="10" rok="2014"/>
  5. <ms:Osoba ID="397082">
  6. <ms:AdresyOsoby>
  7. <ms:AdresKorespondencyjny ulica="ul. Wielka" nr_domu="1" nr_mieszkania="33" miejscowosc="Wrocław" poczta="Wrocław" kod="53-333" wojewodztwo="dolnośląskie" kraj="Polska"/>
  8. </ms:AdresyOsoby>
  9. </ms:Osoba>
  10. </ms:Rozkaz>
  11. </DoSynchronizacji>



PHP
  1. $xml = simplexml_load_file($nazwa2);
  2. $ns = $xml->getNamespaces(true);
  3.  
  4.  
  5. foreach ($xml->children($ns['ms']) as $child)
  6. {
  7.  
  8. // tu nie wypluwa nic
  9. echo "Oko : ".$oko=((string)$xml->Sygnatura['wydzial']);
  10.  
  11. // Tutaj jest ok. W całym XML występują te pozycje. W przykładzie wyżej nie.
  12. echo"<br>";
  13. $nazwisko=((string)$child->Osoba->Nazwisko);
  14. echo"Nazwisko : ".$nazwisko=iconv('utf-8','iso-8859-2', $nazwisko);
  15. echo"<br>";
  16. echo"PESEL : ".$pesel=((string)$child->Osoba->PESEL);
  17. echo"<br>";
  18. echo'<pre>'; var_dump($child); echo'</pre>';
  19. }


Ten post edytował 8_pasarzer_NOSTROMO 17.02.2015, 07:12:37
Go to the top of the page
+Quote Post
Pyton_000
post 17.02.2015, 07:53:29
Post #20





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. ((string)$child->Sygnatura->attributes()['rok']);
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 24.07.2025 - 18:38