Autor | Zpráva | ||
---|---|---|---|
xml problem Profil * |
#1 · Zasláno: 13. 9. 2013, 09:09:32
Ahoj,
mám problém. Vysvetlím. Načítam si XML súbor z URL $request_url = "http://example.com/subor.xml"; <produkty> <polozka> <id>1</id> <nazov>Nazov</nazov> <popis>Lorem Lipsum</popis> </polozka> <polozka> . . . </polozka> </produkty> Spracujem to takýmto kódom: $xml = simplexml_load_file($request_url); foreach($xml->produkty as $key) { $id = $key->id; $nazov = $key->nazov; $popis = $key->popis; } Teraz mám taký problém, že musím načítať aj druhý XML z inej adresy (to môže už byť v inom súbore) ale ten druhý XML má takýto formát: <produkty> <polozka id="1" nazov="Nazov" popis="Lorem Lipsum"> <polozka ...> <polozka> </produkty> A toto neviem načítať, ako dostať do premenných keď je to takto napísané. Poraďte neaký príkladový kód prosím. |
||
juriad Profil |
#2 · Zasláno: 13. 9. 2013, 09:13:56
K atributu id přistoupíš takto:
$key['id'] |
||
xml problem Profil * |
#3 · Zasláno: 13. 9. 2013, 16:11:40
Dakujem,
ešte jeden problém. Prečo mi ten vyššie uvedený kód simplexml_load_file nedokáže načítať XML súbor ktorý má takýto tvar? <DataSet xmlns="http://www.atcomp.cz/webservices"> <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="Cenik"> <xs:element name="Cenik" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Zbozi"> <xs:complexType> <xs:sequence> <xs:element name="rozsireny_text" type="xs:string" minOccurs="0" msdata:Ordinal="9"/> </xs:sequence> <xs:attribute name="kod_zbozi" type="xs:string"/> <xs:attribute name="popis" type="xs:string"/> <xs:attribute name="part_number" type="xs:string"/> <xs:attribute name="zaruka" type="xs:short"/> <xs:attribute name="dostupnost" type="xs:boolean"/> <xs:attribute name="dph" type="xs:unsignedByte"/> <xs:attribute name="cena" type="xs:decimal"/> <xs:attribute name="cenaEU" type="xs:decimal"/> <xs:attribute name="snimek" type="xs:string"/> <xs:attribute name="kod_vyrobce" type="xs:string"/> <xs:attribute name="kod_kategorie" type="xs:string"/> <xs:attribute name="kategorie" type="xs:string"/> <xs:attribute name="kod_podkategorie" type="xs:string"/> <xs:attribute name="podkategorie" type="xs:string"/> <xs:attribute name="typ" type="xs:int"/> <xs:attribute name="aut_poplatek" type="xs:decimal"/> <xs:attribute name="rema" type="xs:decimal"/> <xs:attribute name="sleva" type="xs:int"/> <xs:attribute name="sam_neprodejne" type="xs:int"/> <xs:attribute name="kod_sprazene" type="xs:string"/> <xs:attribute name="sn_vydej" type="xs:boolean"/> <xs:attribute name="ean" type="xs:string"/> <xs:attribute name="doprodej" type="xs:boolean"/> <xs:attribute name="pevna_cena" type="xs:int"/> <xs:attribute name="neprodejneEU" type="xs:unsignedByte"/> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <Cenik xmlns=""> tu kde uz zacina <cenik xmlns=""> tu už ide to čo som písal v prvom príspevku. Nefunguje mi to načítať. $contents = file_get_contents($request_url); $save = file_put_contents("toto.xml", $contents); $xml = simplexml_load_file("toto.xml"); //or die("feed sa nepodarilo načítať"); print_r($xml); Toto mi vypisuje iba SimpleXMLElement Object ( ) Prosím, kde je problém? |
||
Taps Profil |
#4 · Zasláno: 13. 9. 2013, 20:06:35
xml problem:
soubor toto.xml se ti vytvoří v pořádku ? Má správnou xml strukturu ? |
||
xml problem Profil * |
#5 · Zasláno: 13. 9. 2013, 20:51:33
Áno on vyzerá normálne. Rovnako mi to píše ten SimpleXMLelement Object ( ) ak zadám adresu priamo na dodávateĺa odkiaľ to ťahám
|
||
Tori Profil |
xml problem:
> Toto mi vypisuje iba > SimpleXMLElement Object ( A co by to mělo vypisovat jiného? Dá se s tou instancí SimpleXMLElement pracovat nebo neobsahuje žádná data? Jestli to vypisuje objekt i v případě, že čtete např. $prvek->podrizenyPrvek , tak je potřeba to přetypovat na řetězec
|
||
xml problem Profil * |
#7 · Zasláno: 14. 9. 2013, 06:32:39
Je to prazdne nic v tom nieje. Prazdne zatvorky.
|
||
xml problem Profil * |
#8 · Zasláno: 14. 9. 2013, 09:36:48
Tori:
„A co by to mělo vypisovat jiného?“ Malo by to vypisovať napr. id ak si zadefinujem id, no nevipisuje to nič. |
||
Taps Profil |
xml problem:
a zapisuješ správně hodnoty do xml souboru ? např. pokud je v xml níže uvedené <id>1</id> <? print_r(); ?>
ve výpise vypíše |
||
xml problem Profil * |
#10 · Zasláno: 14. 9. 2013, 13:13:41
Taps:
Asi sa nerozumieme.. ešte raz. Ten XML je na adrese ws.atcomp.cz/blabla/blabla A vyzerá takto [#3] a za tým <Cenik ... > ide takto <Cenik> <polozka id="1" nazov="Nazov" popis="Lorem Lipsum"> <polozka ...> <polozka> </Cenik> foreach($xml->Cenik as $key) { $id = $key['id']; echo $id."<br>"; } |
||
Taps Profil |
#11 · Zasláno: 14. 9. 2013, 16:03:24
xml problem:
A zkoušel jsi i něco takového ? <? foreach($xml->Cenik->polozka as $key) { $id = $key['id']; echo $id."<br>"; } ?> |
||
xml problem Profil * |
#12 · Zasláno: 14. 9. 2013, 16:24:34 · Upravil/a: xml problem
Taps:
To mi vypisuje Warning: Invalid argument supplied for foreach() in ... No ale keď dám že $xml = simplexml_load_file("toto.xml") or die("feed sa nepodarilo načítať"); Ešte je to celé (Cenik->Polozka) obalené v <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> |
||
Tori Profil |
#13 · Zasláno: 14. 9. 2013, 17:31:25
SimpleXML si zřejmě nerozumí s těmi jmennými prostory. Nicméně pro variantu
<polozka id="123" /> se dá se použít i DOM:
$doc = new DOMDocument; $doc->loadXML($feed); foreach ($doc->getElementsByTagName('polozka') as $node) { $id = $node->getAttribute('id'); $nazov = $node->getAttribute('nazov'); $popis = $node->getAttribute('popis'); } |
||
xml problem Profil * |
#14 · Zasláno: 14. 9. 2013, 17:38:04
Tori:
Mno ale píše mi to Warning: DOMDocument::loadXML(): Start tag expected, '<' not found in Entity, line: 1 in |
||
Tori Profil |
Ty položky by měly být uzavřené, jsou?
<Cenik> <polozka id="1" nazov="Nazov" popis="Lorem Lipsum" /> <polozka ... /> <polozka /> </Cenik> |
||
xml problem Profil * |
#16 · Zasláno: 14. 9. 2013, 18:05:21 · Upravil/a: xml problem
Nemôže byť že to má môj hosting problém? |
||
xml problem Profil * |
#17 · Zasláno: 15. 9. 2013, 09:16:26 · Upravil/a: xml problem
Niesu ukončené a keď ich ukončím cez str_replace('">', '"/>' $xml) tak to hlási chyby.
Takto som to chcle napísať str_replace('">', '"/>', $xml) aby nevznikol omyl že tam mám chybu |
||
Tori Profil |
#18 · Zasláno: 15. 9. 2013, 09:43:01
|
||
xml problem Profil * |
#19 · Zasláno: 15. 9. 2013, 12:47:35
jáj.. no ale zatial nič môj problém nevyriešilo.. to vážne nik nevie kde je chyba?
|
||
Časová prodleva: 11 let
|
0