2010-07-19 5 views
0

Я работаю с приведенной ниже строкой XML-файла, и я попытался использовать несколько методов, чтобы попытаться получить доступ к определенным частям содержимого XML. Пожалуйста, смотрите код после того, как файл XML ниже для моей попытки:Доступ к XML-контенту через PHP с помощью 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> 

код для доступа к содержимому XML:

$xml = simplexml_load_string($result); 

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

Приведенный выше код был основан на ссылку разместил другой StackOverflow вопрос: http://blog.preinheimer.com/index.php?/archives/172-SimpleXML,-Namespaces-Hair-loss.html

Любая помощь будет оценена по достоинству.

Спасибо.

ответ

0

Оказывается, ответ, который я искал, не был SimpleXML - или, по крайней мере, я не мог заставить это работать.

То, что я сделал это использовал xml_parse_into_struct, чтобы создать массив значений, возвращаемых из данных XML: http://www.php.net/manual/en/function.xml-parse-into-struct.php

0

Вместо этого используйте вместо этого SOAP extension.
См. the example in the PHP Manual о том, как написать клиент.

Альтернативой является использование Zend_Soap в качестве отдельного компонента.

+0

Эти ссылки кажутся все об использовании SOAP для получения данных. Я действительно получил данные XML и теперь хочу манипулировать им с помощью PHP. Я не вижу, как расширение SOAP поможет мне это сделать? – chocolatecoco

+0

@baswoni Клиент Soap может извлекать данные с Soap Server. Если вы указываете карту классов при создании клиента Soap, вы можете сопоставить возвращаемые структуры данных с вашим классом. См. Последние четыре строки в этом примере. – Gordon

Смежные вопросы