PHP: SimpleXML

Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

Ik ben wat aan het experimenteren om in PHP via SOAP een SharePoint webservice aan te spreken. Dat lukt aardig, alleen slaag ik er niet in om de resultset te verwerken. Een reply van GetListItems() op de Lists-webservice ziet er bijvoorbeeld zo uit:

Code: Selecteer alles

<listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
  <rs:data ItemCount="3">
    <z:row ows_Attachments="0" ows_LinkTitle="Titel een" ows_Title="Titel een" ows_ID="1" ows_owshiddenversion="1"/>
    <z:row ows_Attachments="0" ows_LinkTitle="nog ne titel" ows_Title="nog ne titel" ows_ID="2" ows_owshiddenversion="1"/>
    <z:row ows_Attachments="0" ows_LinkTitle="titel 3, want da's fijn" ows_Title="titel 3, want da's fijn" ows_ID="3" ows_owshiddenversion="1"/>
  </rs:data>
</listitems>


Ik zou uit bovenstaande graag de ows_Title halen.
Ik laad dit dus in een SimpleXML-object:

Code: Selecteer alles

$output = new SimpleXMLElement($temp);

.. maar dan ben ik het spoor bijster hoe ik tot dat gedeelte raak. 1 van de problemen is volgens mij het gebruik van namespaces, maar ik ben me hier dadelijk gewoon aan het blindstaren ... Heeft iemand hier genoeg ervaring mee om me uit de brand te helpen? :)

Thx!
crapiecorn
Elite Poster
Elite Poster
Berichten: 2149
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

Hmm normaal werkt dat zo:

een voorbeeld

Code: Selecteer alles

<image type='jpg'>
<thumbImage src='th_big_001.jpg'  alt='big_001.jpg'/>
<bigImage src='big_001.jpg' width='800' height='600' />
</image>
<image type='jpg'>
<thumbImage src='th_big_002.jpg'  alt='big_002.jpg'/>
<bigImage src='big_002.jpg' width='800' height='600' />
</image>


kan je zo ophalen

Code: Selecteer alles

$sx = simplexml_load_file($path.$xml); 
foreach ($sx->image as $image) {

$thumb =    $image->thumbImage['src'];
    $big =       $image->bigImage['src'];
    $bigwidth = $image->bigImage['width'];
    $bigheight = $image->bigImage['height'];
    $alt =       $image->thumbImage['alt'];
}


edit:

eerst zou je nog moeten loopen:
Laatst gewijzigd door crapiecorn 12 apr 2007, 17:06, in totaal 1 gewijzigd.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

I know, maar zelfs als ik echo $output -> children(); doe krijg ik niks.
't is volgens mij iets met die namespaces ...
Ook als ik die nodes schrijf als $output -> {"rs:data"} krijg ik niks :(
crapiecorn
Elite Poster
Elite Poster
Berichten: 2149
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

http://devzone.zend.com/manual/view/pag ... paces.html

en vooral :

http://devzone.zend.com/manual/view/pag ... space.html

Code: Selecteer alles

<?php

$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
    <title>My Book</title>
    <chapter id="1">
        <chap:title>Chapter 1</chap:title>
        <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
            In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
            Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
            ultricies id, mauris.</para>
    </chapter>
    <chapter id="2">
        <chap:title>Chapter 2</chap:title>
        <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
            gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
            vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
            tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
    </chapter>
</book>
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');

foreach ($result as $title) {
  echo $title . "\n";
}

?>


Met een beetje tweaken zou dit moeten werken
Plaats reactie

Terug naar “Development”