Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parsowanie pliku xml/rdf z namespaces do obiektu/tablicy [SimpleXML]
WiruSSS
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 7
Dołączył: 3.02.2007

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


Witam

Posiadam pliki o strukturze rdf, które potrzebuję sparsować do tablicy w taki sposób, żeby mozna było ten proces później odwrócić. Na ten moment parser działa już tak, ze rozpoznaje poszczególne elementy które potrzebuje przetworzyć, wypluwa coś takiego:

  1. x:xmpmeta xmlns:x="value" x:xmptk="value"
  2. rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  3. rdf:Description rdf:about="" xmlns:aaa="value" xmlns:bbb="value" xmlns:ccc="value" xmlns:ddd="value" aaa:param="value" aaa:param2="value" bbb:param="value"
  4. ccc:Param
  5. rdf:Seq
  6. rdf:li
  7. value
  8. rdf:li
  9. rdf:li
  10. value2
  11. rdf:li
  12. rdf:li
  13. value3
  14. rdf:li
  15. rdf:Seq
  16. ccc:Param
  17. ddd:Param
  18. value
  19. ddd:Param
  20. rdf:Description
  21. rdf:RDF
  22. x:xmpmeta


oczywiście nic nie stoi na przeszkodzie zeby wypluwał '/' przy znacznikach zamykających jesli by to mialo w czyms pomóc. Potrzebuję to jakoś wrzucic do tablicy żebym mógl porównac ze soba kilka takich tablic, konkretnie porównywane bedą wszystkie 'value' poszczególnych parametrów

pozdrawiam

Ten post edytował WiruSSS 11.08.2013, 09:28:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
WiruSSS
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 7
Dołączył: 3.02.2007

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


ponizej link do przykladowego pliku, tak jak mówiłem nie jet to typowy plik rdf chocby ze wzgledu na rozszerzenie, ale to chyba nie powino mieć znaczenia.

http://clients.goodlux.com/tiffany/cr2/IMG_0390.xmp

[EDIT]

to niby jakoś tam parsuje, działa tylko w jedną strone, sparsowany plik nie wraca do swojej poprzedniej postaci po ponownym parsowaniu za pomocą tego narzędzia

[EDIT]

Ok prepraszam jesli jest to jakiś banalny problem ale z obiektowym php jak do tej pory miałem malo do czynienia i cięzko mi jest jeszce zrozumiec pewne rzeczy. Doszedłem do szegoś takiego:

  1. $xml = 'http://clients.goodlux.com/tiffany/cr2/IMG_0390.xmp';
  2.  
  3. $xml = simplexml_load_file($xml);
  4.  
  5. $ns = $xml->getNameSpaces(true);
  6. print_r($ns);
  7.  
  8. $x = $xml->children($ns['x']);
  9.  
  10. print_r($x);


rezultat jest taki

Kod
Array
(
    [x] => adobe:ns:meta/
    [rdf] => http://www.w3.org/1999/02/22-rdf-syntax-ns#
    [exif] => http://ns.adobe.com/exif/1.0/
    [aux] => http://ns.adobe.com/exif/1.0/aux/
    [tiff] => http://ns.adobe.com/tiff/1.0/
    [xap] => http://ns.adobe.com/xap/1.0/
    [dc] => http://purl.org/dc/elements/1.1/
    [crs] => http://ns.adobe.com/camera-raw-settings/1.0/
    [photoshop] => http://ns.adobe.com/photoshop/1.0/
)
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [xmptk] => Public XMP Toolkit Core 3.5
        )

)


[EDIT]

Więc wychodzi na to że mam dostęp do każdej gałezi z osobna

Potrzebowałbym zrobić tak, zeby caly ten plik znalazł się w jednym obiekcie/tablicy ...trochę zaczynam rozumieć o co chodzi z namespaces. Znalazłem kilka przykałdów jak się dostać do takich gałęzi jednak żaden z nich nie ma odzwierciedlenia w moim przypadku.

Z tego co widze to zwykłe pliki xml wyglądają dokładnie tak jakbym sobie tego zyczył natomiast obiekty z namespaces są 'dziurawe' ...czy istnieje jakas funkcja która wyswietli mi cały plik rdf w takiej formie jak zwykly plik xml ale z uwzglednieniem tych namespaces?

[EDIT]

Ok poradziłem w sobie w najbardziej prozaiczny z mozliwych sposobów, szkoda, ze wcześniej na to nie wpadłem (IMG:style_emoticons/default/tongue.gif)
Dla potomnych jesli komuś by się miało przydać

  1. $xml = 'http://clients.goodlux.com/tiffany/cr2/IMG_0390.xmp';
  2. $xml = file_get_contents($xml);
  3. $xml = preg_replace('#([</][a-zA-Z]+):([a-zA-Z0-9]+)#', "$1___$2", $xml);
  4. $xml = preg_replace('#([a-zA-Z]+):([a-zA-Z0-9]+=)#', "$1___$2", $xml);
  5. $xml = simplexml_load_string($xml);
  6. print_r($xml);


...dokładnie tego mi było trzeba (IMG:style_emoticons/default/tongue.gif)

Ten post edytował WiruSSS 10.08.2013, 18:27:05
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 03:41