Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odczyt danych z pliku xml (namespaces)
marekpulawy
post 17.08.2015, 12:33:30
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Witam

Mam problem z odczytem pól z pliku xml, który wykorzystuje przestrzenie nazw.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <komunikat xmlns="www.csioz.gov.pl/xml/swd-platnik/1" xmlns:nfz="www.nfz.gov.pl/xml/swd-platnik/1" typ="P_SWI" obszar="AMBSZP" wersja="8" nfz:wersja="7.0" id-odb="3000" id-inst-odb="dent20140707" nr-gen-odb="1115" id-nad="3" id-inst-nad="" nr-gen="4985780" czas-gen="2015-08-17T12:18:58" nfz:info-aplik-nad="KS-SIKCH 2015.8.0.2">
  3. <swiadczeniodawca typ-id-swd="X" id-swd="30003386" id-inst="dent20140707"/>
  4. <potw-danych>
  5. <potw-zest-swiad nfz:id-inst="dent20140707" id-zest-swiad="253345" nr-wersji="1" nfz:stat-imp-d-med="0" nfz:stat-wal-d-med="1" nfz:nr-wersji-rozl="1" nfz:stat-imp-d-rozl="0">
  6. <potw-swiadcz id-swiad="253345">
  7. <nfz:potw-pozycji-rozl id-inst="dent20140707" id-poz-rozlicz="253345" nr-wersji-pr="1" stat-imp-d-poz-rozl="0" stat-wal-d-poz-rozl="1" stat-wer-d-med="2">
  8. <nfz:problem waga="B" kod="51608029" opis="PRZEKROCZONO LIMIT "/>
  9. </nfz:potw-pozycji-rozl>
  10. </potw-swiadcz>
  11. </potw-zest-swiad>
  12. </potw-danych>
  13. </komunikat>


Konkretnie nie mogę się "dostać" do gałęzi <nfz:problem waga="B" kod="51608029" opis="PRZEKROCZONO LIMIT "/> i odczytać tych pól.
Proszę o pomoc.

To moje wypociny:
  1. $komunikat = simplexml_load_file('swz/'.$nazwa.'');
  2. $komunikat->registerXPathNamespace('nfz', 'www.nfz.gov.pl/xml/swd-platnik/1');
  3. $namespaces = $komunikat->getNamespaces(TRUE);
  4. $swiadczeniodawca = $komunikat->swiadczeniodawca;
  5. $typ_pliku=$komunikat['typ'];
  6. $id_odb = $komunikat['id-odb'];
  7. if ($typ_pliku == 'P_SWI'){
  8. if ($id_odb == $log_user){
  9. echo 'Import raportu zwrotnego do komunikatu o numerze: '; echo $komunikat['nr-gen-odb']; echo '<br/>';
  10. foreach($komunikat->children() as $potw_danych){
  11. foreach($potw_danych->children() as $potw_zest_swiad){
  12. echo 'ID ZESTAWU ŚWIADCZEŃ: '; echo $potw_zest_swiad['id-inst']; echo ' | WERSJA: '; echo $potw_zest_swiad['nr-wersji']; echo '<br/>';
  13. foreach($potw_zest_swiad->children() as $potw_swiadcz){
  14. //echo $potw_swiadcz['id-swiad']; echo '<br/>';
  15. foreach($potw_swiadcz->children($namespaces['nfz']) as $potw_pozycji_rozl){
  16. //foreach($potw_swiadcz->xpath('//nfz:potw_pozycji_rozl') as $potw_pozycji_rozl) {
  17. echo 'idpozrozl: '; echo $potw_pozycji_rozl->id-inst; echo '<br/>';
  18. foreach($potw_pozycji_rozl->children($namespaces['nfz']) as $problem){
  19. echo 'blad: '; echo $problem['opis']; echo '<br>';
  20. }


Ten post edytował marekpulawy 17.08.2015, 12:34:50
Go to the top of the page
+Quote Post
Xelah
post 18.08.2015, 08:07:14
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 12.05.2013
Skąd: Hamburg

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


  1. $doc = new DOMDocument();
  2. $doc->loadXML($xml);
  3.  
  4. $xpath = new DOMXPath($doc);
  5. $xpath->registerNamespace('nfz', 'www.csioz.gov.pl/xml/swd-platnik/1');
  6. $elements = $xpath->query('//nfz:problem');
  7.  
  8. $node = $elements->item(0);
  9. foreach($node->attributes as $attribute) {
  10. var_dump($attribute->name, $attribute->value);
  11. }
Go to the top of the page
+Quote Post
marekpulawy
post 20.08.2015, 09:05:20
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 5.01.2013

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


Niestety serwer wyrzuca taki błąd:

[20-Aug-2015 10:04:29] PHP Warning: DOMDocument::loadXML() [<a href='domdocument.loadxml'>domdocument.loadxml</a>]: Start tag expected, '&lt;' not found in Entity, line: 1 in /home/swsksoft/public_html/testxml.php on line 2
[20-Aug-2015 10:04:29] PHP Warning: Invalid argument supplied for foreach() in /home/swsksoft/public_html/testxml.php on line 12


  1. <?php $doc = new DOMDocument();
  2. $doc->loadXML('test.xml');
  3.  
  4. echo $doc->saveXML();
  5.  
  6.  
  7. $xpath = new DOMXPath($doc);
  8. $xpath->registerNamespace('nfz', 'www.csioz.gov.pl/xml/swd-platnik/1');
  9. $elements = $xpath->query('//nfz:problem');
  10.  
  11. $node = $elements->item(0);
  12. foreach($node->attributes as $attribute) {
  13. var_dump($attribute->name, $attribute->value);
  14. }
  15.  
  16. ?>


Ten post edytował marekpulawy 20.08.2015, 09:06:27
Go to the top of the page
+Quote Post
the-sopel
post 20.08.2015, 17:23:36
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 8.01.2006

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


domdocument.loadxml() służy do wgrania kodu XML ze zmiennej, do wczytania go z pliku użyj domdocument.load() lub przypisz kod do zmiennej https://ideone.com/uv9XD4.

Ten post edytował the-sopel 20.08.2015, 17:35:38
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: 27.04.2025 - 07:56