在 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/
我正在通过 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/