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

Rey*_*rPM 2 php xml symfony deserialization jmsserializerbundle

我正在通过 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>
Run Code Online (Sandbox Code Playgroud)

我想以一种简单的方式访问|解析该结果,但我不知道是否应该反序列化 XML 或只是尝试使用一些 PHP 原生 XML 函数来读取它。那么关于这个第一个疑问的想法?

如果反序列化 XML 更好,那么我已经阅读了这篇文章 “在 Symfony2 中使用 JMSSerializerBundle 反序列化 XML”,并且我根本不清楚是否需要一个实体来实现这一点。还有这个其他主题,仍然让我感到困惑。对此有何建议?经验?建议?

Mal*_*nic 5

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

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