Programovacie jazyky, rady, poradňa...
Pades
Light Expert
Príspevky: 77 Registrovaný: 03 aug 2008, 10:51
Príspevok
od používateľa Pades » 18 feb 2013, 18:27
Ahojte mám problém vačšinou ked som parsoval nejaké xml tak som používal normálne v PHP SimpleXML, ale teraz mám neobvyklé xml a potreubujem z neho dostať z toho <StavySkladu>
kod a
počet každého jedného produktu(zbozi). Ďakujem vopred
Toto je príklad xmlka
Kód: Vybrať všetko
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://www.atcomp.cz/webservices">
<xs:schema id="StavySkladu" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="StavySkladu" msdata:IsDataSet="true" msdata:Locale="cs-CZ">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Zbozi">
<xs:complexType>
<xs:attribute name="kod" type="xs:string" />
<xs:attribute name="pocet" type="xs:int" />
</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">
<StavySkladu xmlns="">
<Zbozi diffgr:id="Zbozi1" msdata:rowOrder="0" kod="C5709A" pocet="0"/>
<Zbozi diffgr:id="Zbozi2" msdata:rowOrder="1" kod="C5708A" pocet="0"/>
<Zbozi diffgr:id="Zbozi3" msdata:rowOrder="2" kod="C5718A" pocet="45"/>
<Zbozi diffgr:id="Zbozi4" msdata:rowOrder="3" kod="EC13S050088" pocet="2"/>
<Zbozi diffgr:id="Zbozi5" msdata:rowOrder="4" kod="EC376123GB" pocet="3"/>
<Zbozi diffgr:id="Zbozi6" msdata:rowOrder="5" kod="EC800302" pocet="0"/>
<Zbozi diffgr:id="Zbozi7" msdata:rowOrder="6" kod="EC806392" pocet="2"/>
<Zbozi diffgr:id="Zbozi8" msdata:rowOrder="7" kod="EC800202" pocet="1"/>
<Zbozi diffgr:id="Zbozi9" msdata:rowOrder="8" kod="EC806872" pocet="1"/>
<Zbozi diffgr:id="Zbozi10" msdata:rowOrder="9" kod="EPC163071" pocet="16"/>
<Zbozi diffgr:id="Zbozi11" msdata:rowOrder="10" kod="EMD157021" pocet="0"/>
<Zbozi diffgr:id="Zbozi12" msdata:rowOrder="11" kod="EPC834031" pocet="0"/>
<Zbozi diffgr:id="Zbozi13" msdata:rowOrder="12" kod="EPC825341" pocet="17"/>
</StavySkladu>
</diffgr:diffgram>
</DataSet>
audiotrack
VIP
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 19 feb 2013, 8:46
čím je toto xml neobvyklé, že nevieš použiť simplexml?
Kód: Vybrať všetko
<?php
$string = '<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://www.atcomp.cz/webservices">
<xs:schema id="StavySkladu" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="StavySkladu" msdata:IsDataSet="true" msdata:Locale="cs-CZ">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Zbozi">
<xs:complexType>
<xs:attribute name="kod" type="xs:string" />
<xs:attribute name="pocet" type="xs:int" />
</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">
<StavySkladu xmlns="">
<Zbozi diffgr:id="Zbozi1" msdata:rowOrder="0" kod="C5709A" pocet="0"/>
<Zbozi diffgr:id="Zbozi2" msdata:rowOrder="1" kod="C5708A" pocet="0"/>
<Zbozi diffgr:id="Zbozi3" msdata:rowOrder="2" kod="C5718A" pocet="45"/>
<Zbozi diffgr:id="Zbozi4" msdata:rowOrder="3" kod="EC13S050088" pocet="2"/>
<Zbozi diffgr:id="Zbozi5" msdata:rowOrder="4" kod="EC376123GB" pocet="3"/>
<Zbozi diffgr:id="Zbozi6" msdata:rowOrder="5" kod="EC800302" pocet="0"/>
<Zbozi diffgr:id="Zbozi7" msdata:rowOrder="6" kod="EC806392" pocet="2"/>
<Zbozi diffgr:id="Zbozi8" msdata:rowOrder="7" kod="EC800202" pocet="1"/>
<Zbozi diffgr:id="Zbozi9" msdata:rowOrder="8" kod="EC806872" pocet="1"/>
<Zbozi diffgr:id="Zbozi10" msdata:rowOrder="9" kod="EPC163071" pocet="16"/>
<Zbozi diffgr:id="Zbozi11" msdata:rowOrder="10" kod="EMD157021" pocet="0"/>
<Zbozi diffgr:id="Zbozi12" msdata:rowOrder="11" kod="EPC834031" pocet="0"/>
<Zbozi diffgr:id="Zbozi13" msdata:rowOrder="12" kod="EPC825341" pocet="17"/>
</StavySkladu>
</diffgr:diffgram>
</DataSet>';
$xml = simplexml_load_string($string);
$produkty = array();
foreach($xml->xpath('//StavySkladu/Zbozi') as $zbozi) {
$produkty[(string)$zbozi->attributes()->kod] = (int)$zbozi->attributes()->pocet;
}
print_r($produkty);
?>