Autor | Zpráva | ||
---|---|---|---|
kujeba Profil |
#1 · Zasláno: 25. 7. 2011, 16:17:58
Mám url, ktere po zadání do prohlížeče vrátí XML soubor ve tvaru:
<data xsi:noNamespaceSchemaLocation="http://www.example.cz/doc/example1.xsd"> <head> <lastChanged value="25.07.2011 00:30:02.139"/> </head> <zeme id="8" name="Itálie"> <katalog typ="ax_1zeme" lang="cz" polozka="fakultativnivylety">Dle místní nabídky.</katalog> <katalog typ="ax_1zeme" lang="cz" polozka="hlavnimesto">Řím (Roma)</katalog> </zeme> </data> http://www.example.cz/doc/example1.xsd vypadá následovně: <xs:schema> <xs:element name="cena"> <xs:complexType> <xs:attribute name="cena" type="xs:NMTOKEN" use="required"/> <xs:attribute name="id" use="required"/> </xs:complexType> </xs:element> <xs:element name="data"> <xs:complexType> <xs:sequence> <xs:element ref="head"/> <xs:element maxOccurs="unbounded" ref="zeme"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="katalog"> <xs:complexType mixed="true"> <xs:attribute name="typ" type="xs:string" use="required"/> <xs:attribute name="polozka" type="xs:string" use="required"/> <xs:attribute name="lang" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema> pokud použiji následující kód: $contents = @file_get_contents($url); $xml = @simplexml_load_string($contents); dostanu přitom úplně jiné XML: SimpleXMLElement Object ( [head] => SimpleXMLElement Object ( [lastChanged] => SimpleXMLElement Object ( [@attributes] => Array ( [value] => 25.07.2011 00:30:02.139 ) ) ) [zeme] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 [name] => Bulharsko ) [katalog] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [typ] => ax_1zeme [lang] => cz [polozka] => ceny ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [typ] => ax_1zeme [lang] => cz [polozka] => hlavnimesto ) ) ) . . . Muzete mi, prosím, poradit, jak pomocí knihovny simpleXML provazat xml s xsi odkazem? |
||
Mike8748 Profil |
#2 · Zasláno: 26. 7. 2011, 14:47:22
a jaký máš problém? co je na tom špatně? (ten dump simplexml objektu odpovidá přesně tebou uvedené struktuře, jak si přišel na to že je to jiné xml?)
čeho chceš dosáhnout? validace XML oproti XSD? to simplexml fakt neumí |
||
kujeba Profil |
#3 · Zasláno: 26. 7. 2011, 14:55:28
No já bych chtěl, abych mohl rozparsovat a zpracovávat data která mi vrací prohlížeč. SimpleXML mi vrací jiná data.
Tedy pokud je kvůli tomu potřeba provést validaci XML oproti XSD, co mám použít? |
||
nightfish_ Profil * |
#4 · Zasláno: 26. 7. 2011, 15:16:05
kujeba:
„No já bych chtěl, abych mohl rozparsovat a zpracovávat data která mi vrací prohlížeč. SimpleXML mi vrací jiná data.“ Jaká jiná data? SimpleXML ti vrací strom reprezentující XML data, ukázaná v [#1]. Pokud chceš vrátit data z toho XSD, budeš muset SimpleXML předhodit adresu toho XSD souboru. |
||
Mike8748 Profil |
#5 · Zasláno: 26. 7. 2011, 15:20:20 · Upravil/a: Mike8748
kujeba:
pokud je stále řeč o XML které si uvedl v prvním příspěvku tak tvůj dump simplexml objektu obsahuje ty samá data. pokud máš jiná data prosím ukázku. pokud chces data pouze vypisovat k čemu validace? pokud použiju tvůj kód $xml = @simplexml_load_string($contents); tak echo $xml->head->lastChanged['value']; // vypise 25.07.2011 00:30:02.139 echo $xml->zeme['id']; // vypise 8 echo $xml->zeme['name']; // vypise Italie atd vypisuje to ta samá data co jsou v uvedeném XML edit: pokud opravdu chceš provádět validaci toho XML souboru jestli obsahuje přesně to co má tak použij třídu DOMDocument a její metody |
||
kujeba Profil |
#6 · Zasláno: 26. 7. 2011, 15:52:32
Děkuji všem za rady. Použil jsem třídu DOM. I když není simply, tak toho umí daleko více než SimpleXML.
|
||
Časová prodleva: 13 let
|
0