Доступ к XML-контенту через PHP с использованием SimpleXML - PullRequest
0 голосов
/ 19 июля 2010

Я работаю со строкой файла XML ниже и попробовал несколько методов, чтобы попытаться получить доступ к определенным частям содержимого XML.Пожалуйста, смотрите код после XML-файла ниже для моей попытки:

<?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>01234567890</Phone>
<EvePhone/>
<Mobile/>
<Email>joe@bloggs.com</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

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

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

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

0 голосов
/ 19 июля 2010

Попробуйте вместо этого использовать расширение SOAP .
См. пример руководства по PHP о том, как написать клиент.

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

...