在 Symfony2 中反序列化或解析 XML 响应

Deserializing or parse XML response in Symfony2

我正在通过 cURL 调用 API 方法,我得到了这样的响应:

<?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 原生 [=21] 来读取它=] 函数。那么关于这个第一个疑问的想法?

如果反序列化 XML 更好,那么我已经阅读了 this post "Deserializing XML with JMSSerializerBundle in Symfony2" and is not clear at all for me if I will need an entity to achieve that. Also this other 主题 仍然让我感到困惑。有什么建议吗?经验?建议?

这取决于你的意图。如果您想直接将部分或全部 XML 推送到 entity/document 对象以保存到数据库,那么 JMSSerializerBundle 可以非常巧妙地做到这一点,并且绝对是最好的方法。

但是,如果您只想从 xml 中提取一个或两个字段并在其他业务逻辑中使用它们,那么只需将 xml 加载到 SimpleXML 对象中通常会更简单.

您可以使用任何对象(不仅是实体)将 XML 文件反序列化为。建议反序列化为对象,因为您可能希望以 OOP 方式使用它。

这是一篇关于 JMS 序列化程序(捆绑包)的详细解释博客,包括用户对象中的 XML 反序列化示例:http://johnkary.net/blog/deserializing-xml-with-jms-serializer-bundle/