2010-07-19 7 views
0

Je travaille avec la chaîne de fichier XML ci-dessous et j'ai essayé un certain nombre de méthodes pour essayer d'accéder à certaines parties du contenu XML. S'il vous plaît voir le code après le fichier XML ci-dessous pour ma tentative:Accéder au contenu XML via PHP en utilisant SimpleXML

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 
<Address_ListResponse xmlns="http://example.example.com/"> 
<Address_ListResult> 
<Address> 
<HoldingId xsi:nil="true"/> 
<MainId>1617931</MainId> 
<ContactId>8</ContactId> 
<Description>Home, All Purposes</Description> 
<Position/> 
<Department/> 
<Organisation/> 
<AddressLabel>Mr Joe Bloggs</AddressLabel> 
<AddressLine1>1 Fake Road</AddressLine1> 
<AddressLine2/> 
<AddressLine3/> 
<Town>Faketown</Town> 
<CountyId>818</CountyId> 
<PostCode>FA33 4KE</PostCode> 
<CountryId>3</CountryId> 
<Phone></Phone> 
<EvePhone/> 
<Mobile/> 
<Email>[email protected]</Email> 
<Fax/> 
<WWW/> 
<AddressTypeId>1</AddressTypeId> 
<IsBilling>true</IsBilling> 
<IsMailing>true</IsMailing> 
<IsDelivery>true</IsDelivery> 
<IsInherited>false</IsInherited> 
<GridN/> 
<GridE/> 
<Latitude/> 
<Longitude/> 
<CensationCode/> 
<IsDeleted>false</IsDeleted> 
<HoldingPersonalDetailsId xsi:nil="true"/> 
<IsSynced>false</IsSynced> 
<BeenProcessed>false</BeenProcessed> 
<CountyName/> 
<CountryName/> 
<AddressTypeName>Home</AddressTypeName> 
</Address> 
</Address_ListResult> 
</Address_ListResponse> 
</soap:Body> 
</soap:Envelope> 

code pour accéder au contenu XML:

$xml = simplexml_load_string($result); 

echo "Town: " . $xml->children('http://schemas.xmlsoap.org/soap/envelope/')->children('http://example.example.com/')->Address_ListResponse->Town; 

Le code ci-dessus a été basé sur un lien posté par une autre question Stackoverflow: http://blog.preinheimer.com/index.php?/archives/172-SimpleXML,-Namespaces-Hair-loss.html

Toute aide serait appréciée.

Merci.

Répondre

0

Envisagez d'utiliser le SOAP extension à la place. Voir the example in the PHP Manual pour savoir comment écrire un client.

Une alternative serait d'utiliser Zend_Soap en tant que composant autonome.

+0

Ces liens semblent être tout sur l'utilisation de SOAP pour obtenir des données. J'ai en fait les données XML et je veux maintenant les manipuler en utilisant PHP. Je ne vois pas comment l'extension SOAP m'aiderait à faire ça? – chocolatecoco

+0

@baswoni Un client Soap peut extraire des données à partir d'un serveur Soap. Si vous spécifiez un mappage de classe lors de la création du client de savon, vous pouvez mapper les structures de données renvoyées à votre classe. Voir les quatre dernières lignes dans l'exemple. – Gordon

Questions connexes