¿Cómo deserializar el objeto del feed OData Atom?

Estoy tratando de analizar la respuesta de un servicio OData REST. Cuando la respuesta está en formato JSON, es fácil de usarReadAsJsonDataContract Método del kit de inicio WCF REST. Sin embargo, las cosas parecen ser más complicadas en caso de que la respuesta sea un feed Atom. Esto es un ejemplo:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<entry xml:base="http://localhost:64172/BookshopService.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
  <id>http://localhost:64172/BookshopService.svc/Books(89)</id>
  <title type="text"></title>
  <updated>2010-11-08T09:44:21Z</updated>
  <author>
    <name />
  </author>
  <link rel="edit" title="Books" href="Books(89)" />
  <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/OrderLines" type="application/atom+xml;type=feed" title="OrderLines" href="Books(89)/OrderLines" />
  <category term="BookshopModel.Books" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
  <content type="application/xml">
    <m:properties>
      <d:Id m:type="Edm.Int32">89</d:Id>
      <d:Author>Martin Fowler</d:Author>
      <d:Title>Analysis Patterns</d:Title>
      <d:Price m:type="Edm.Decimal">50.20</d:Price>
    </m:properties>
  </content>
</entry>

Por lo tanto, el objeto real se serializa en el elemento "content / m: properties". Y, por supuesto, esto no puede ser manejado porDataContractSerializer eso espera un esquema diferente.

¿Alguien sabe qué técnica se puede utilizar para deserializar el contenido del elemento OData atom m: properties?

Respuestas a la pregunta(1)

Su respuesta a la pregunta