Netradičné XML

Programovacie jazyky, rady, poradňa...
Pades
Light Expert
Light Expert
Príspevky: 77
Registrovaný: 03 aug 2008, 10:51

Netradičné XML

Príspevok od používateľa Pades »

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
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Netradičné XML

Príspevok od používateľa audiotrack »

čí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);
?>
Napísať odpoveď