Десериализация или разбор XML-ответа в Symfony2

Я вызываю метод API через cURL и получаю такой ответ:

<?xml version="1.0" encoding="UTF-8"?>
<jobInfo
    xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    <id>75080000002s5siAAA</id>
    <operation>query</operation>
    <object>User</object>
    <createdById>00580000008ReolAAC</createdById>
    <createdDate>2015-06-23T13:03:01.000Z</createdDate>
    <systemModstamp>2015-06-23T13:03:01.000Z</systemModstamp>
    <state>Open</state>
    <concurrencyMode>Parallel</concurrencyMode>
    <contentType>CSV</contentType>
    <numberBatchesQueued>0</numberBatchesQueued>
    <numberBatchesInProgress>0</numberBatchesInProgress>
    <numberBatchesCompleted>0</numberBatchesCompleted>
    <numberBatchesFailed>0</numberBatchesFailed>
    <numberBatchesTotal>0</numberBatchesTotal>
    <numberRecordsProcessed>0</numberRecordsProcessed>
    <numberRetries>0</numberRetries>
    <apiVersion>34.0</apiVersion>
    <numberRecordsFailed>0</numberRecordsFailed>
    <totalProcessingTime>0</totalProcessingTime>
    <apiActiveProcessingTime>0</apiActiveProcessingTime>
    <apexProcessingTime>0</apexProcessingTime>
</jobInfo>

Я хочу получить доступ к этому результату простым способом, и я не знаю, следует ли мне десериализовать XML или просто попытаться прочитать его с помощью какой-либо встроенной в PHP XML-функции. Итак, идеи по этому первому сомнению?

Если лучше десериализовать XML, то я прочитал этот пост "Десериализация XML с помощью JMSSerializerBundle в Symfony2" и мне совершенно непонятно, понадобится ли мне объект для этого. Также эта другая тема и до сих пор меня смущает. Любые советы по этому поводу? Опыт? Предложения?


person ReynierPM    schedule 23.06.2015    source источник
comment
php.net/manual/en/function.simplexml-load-string. php   -  person Vadim Ashikhman    schedule 23.06.2015


Ответы (2)


Это зависит от вашего намерения. Если вы хотите напрямую отправить часть или весь XML-код в объект объекта/документа для сохранения в базе данных, то JMSSerializerBundle может сделать это очень разумно и, безусловно, является лучшим способом сделать это.

Однако, если вы просто хотите извлечь одно или два поля из xml и использовать их в другой бизнес-логике, просто загрузите xml в SimpleXML часто бывает проще.

person Maltronic    schedule 23.06.2015

Вы можете использовать любой объект (не только объект) для десериализации файла XML. Рекомендуется десериализовать объект, потому что вы, вероятно, захотите использовать его в ООП.

Это хорошо объясненный блог о сериализаторе (пакете) JMS, включающий пример десериализации XML в пользовательском объекте: http://johnkary.net/blog/deserializing-xml-with-jms-serializer-bundle/

person Pi Wi    schedule 23.06.2015