Walmart Items API からの XML デシリアライゼーションに問題があります。
これは、応答を逆シリアル化するために使用しているコードです。名前空間なしでプロパティを逆シリアル化する方法を知っている人はいますか? デフォルトの名前空間をhttp://walmart.comに設定しようとしましたが、うまくいきませんでした。
これがコードです。
var resp = await client.GetAsync(fullurl);
var serializer = new XmlSerializer(typeof(T));
string xmlstr = await resp.Content.ReadAsStringAsync();
using (TextReader reader = new StringReader(xmlstr))
{
T itemResps = (T)serializer.Deserialize(reader);
}
ns:price (currenty , amount) の下のプロパティには名前空間がありませんが、他のすべての要素には名前空間があります。
これは、ウォルマート API サーバーからの応答です。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:ItemResponses xmlns:ns2="http://walmart.com/">
<ns2:ItemResponse>
<ns2:mart>WALMART_US</ns2:mart>
<ns2:sku>WALSKU000</ns2:sku>
<ns2:wpid>FFOEKJFJSI</ns2:wpid>
<ns2:upc>887276146249</ns2:upc>
<ns2:gtin>00887276146249</ns2:gtin>
<ns2:productName>Samsung Galaxy Tab E Lite 7" 8GB Tablet - Android 4.4 KitKat</ns2:productName>
<ns2:productType>Tablet Computers</ns2:productType>
<ns2:price>
<currency>USD</currency>
<amount>107.00</amount>
</ns2:price>
<ns2:publishedStatus>SYSTEM_PROBLEM</ns2:publishedStatus>
</ns2:ItemResponse>
<ns2:ItemResponse>
<ns2:mart>WALMART_US</ns2:mart>
<ns2:sku>WALSKU001</ns2:sku>
<ns2:wpid>XDHEUHFIHEE</ns2:wpid>
<ns2:upc>045496590086</ns2:upc>
<ns2:gtin>00045496590086</ns2:gtin>
<ns2:productName>Nintendo Switch Gaming Console with Gray Joy-Con</ns2:productName>
<ns2:productType>Video Game Consoles</ns2:productType>
<ns2:price>
<currency>USD</currency>
<amount>399.99</amount>
</ns2:price>
<ns2:publishedStatus>UNPUBLISHED</ns2:publishedStatus>
</ns2:ItemResponse>
</ns2:ItemResponses>
これは、ウォルマート アイテム APIからのサンプル レスポンスです。すべての要素に名前空間が含まれているわけではありません。昔はこんな感じだったと思います。しかし、それはもう来ません。
<?xml version="1.0" encoding="UTF-8"?>
<ItemResponses xmlns:ns2="http://walmart.com/">
<ItemResponse>
<mart>WALMART_US</mart>
<sku>379third908</sku>
<gtin>00313159099947</gtin>
<productName>Carex Soft Grip Folding Cane - Black Walking Cane</productName>
<productType>Walking Canes</productType>
<price>
<currency>USD</currency>
<amount>13.27</amount>
</price>
<publishedStatus>IN_PROGRESS</publishedStatus>
</ItemResponse>
<ItemResponse>
<mart>WALMART_US</mart>
<sku>prodtest1571</sku>
<upc>889296686590</upc>
<gtin>00889296686590</gtin>
<productName>REFURBISHED: HP 250 G3 15.6" Notebook, Intel 4th Gen i3, 4GB RAM, 500GB HDD, Win 8.1, M5G69UT#ABA</productName>
<productType>RAM Memory</productType>
<price>
<currency>USD</currency>
<amount>329.99</amount>
</price>
<publishedStatus>PUBLISHED</publishedStatus>
</ItemResponse>
</ItemResponses>