1

Ebay リンクを使用する Windows Phone 7 アプリケーションを作成しています。

http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsByKeywords&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=AppID&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&keywords=harry%20potter%20phoenix

次の形式でアイテムのリストを取得する

<findItemsByKeywordsResponse>
  <ack>Success</ack>
  <version>1.12.0</version>
  <timestamp>2013-03-10T15:50:40.717Z</timestamp>
  <searchResult count="100">
    <item></item>
    <item></item>
    <item>
      <itemId>221170783013</itemId>
      <title>Harry Potter and the Order of the Phoenix (DVD, 2007, Full Frame) - New Unopened</title>
      <globalId>EBAY-ENCA</globalId>
      <primaryCategory>
        <categoryId>617</categoryId>
        <categoryName>DVDs & Blu-ray Discs</categoryName>
      </primaryCategory>
      <galleryURL>http://thumbs2.ebaystatic.com/m/mm6I9OfrWGLKdYk-gLVSacg/140.jpg</galleryURL>
      <viewItemURL>http://www.ebay.com/itm/Harry-Potter-and-Order-Phoenix-DVD-2007-Full-Frame-New-Unopened-/221170783013?pt=US_DVD_HD_DVD_Blu_ray</viewItemURL>
      <productId type="ReferenceID">62940319</productId>
      <paymentMethod>PayPal</paymentMethod>
      <autoPay>false</autoPay>
      <postalCode>P3P1S9</postalCode>
      <location>Canada</location>
      <country>CA</country>
      <shippingInfo>
        <shippingServiceCost currencyId="USD">4.99</shippingServiceCost>
        <shippingType>Flat</shippingType>
        <shipToLocations>Worldwide</shipToLocations>
        <expeditedShipping>false</expeditedShipping>
        <oneDayShippingAvailable>false</oneDayShippingAvailable>
        <handlingTime>1</handlingTime>
      </shippingInfo>
      <sellingStatus></sellingStatus>
      <listingInfo></listingInfo>
      <returnsAccepted>true</returnsAccepted>
      <condition></condition>
      <isMultiVariationListing>false</isMultiVariationListing>
      <topRatedListing>false</topRatedListing>
    </item>
    <item>
      <itemId>130861888976</itemId>
      <title>Harry Potter and the Order of the Phoenix Year 5 by J. K. Rowling (2003,...</title>
      <globalId>EBAY-US</globalId>
      <primaryCategory>
        <categoryId>279</categoryId>
        <categoryName>Children & Young Adults</categoryName>
      </primaryCategory>
      <galleryURL>http://thumbs1.ebaystatic.com/m/mkjj5zzPkMQ6FRLW5FlvXZQ/140.jpg</galleryURL>
      <viewItemURL>http://www.ebay.com/itm/Harry-Potter-and-Order-Phoenix-Year-5-J-K-Rowling-2003-/130861888976?pt=US_Childrens_Books</viewItemURL>
      <productId type="ReferenceID">2327833</productId>
      <paymentMethod>PayPal</paymentMethod>
      <autoPay>false</autoPay>
      <postalCode>30535</postalCode>
      <location>Demorest,GA,USA</location>
      <country>US</country>
      <shippingInfo>
        <shippingServiceCost currencyId="USD">4.0</shippingServiceCost>
        <shippingType>Flat</shippingType>
        <shipToLocations>US</shipToLocations>
        <expeditedShipping>false</expeditedShipping>
        <oneDayShippingAvailable>false</oneDayShippingAvailable>
        <handlingTime>3</handlingTime>
      </shippingInfo>
      <sellingStatus>
        <currentPrice currencyId="USD">12.99</currentPrice>
        <convertedCurrentPrice currencyId="USD">12.99</convertedCurrentPrice>
        <bidCount>0</bidCount>
        <sellingState>Active</sellingState>
        <timeLeft>P0DT0H21M54S</timeLeft>
      </sellingStatus>
      <listingInfo>
        <bestOfferEnabled>false</bestOfferEnabled>
        <buyItNowAvailable>false</buyItNowAvailable>
        <startTime>2013-03-03T16:12:34.000Z</startTime>
        <endTime>2013-03-10T16:12:34.000Z</endTime>
        <listingType>Auction</listingType>
        <gift>false</gift>
      </listingInfo>
      <returnsAccepted>false</returnsAccepted>
      <condition>
        <conditionId>1000</conditionId>
        <conditionDisplayName>Brand New</conditionDisplayName>
      </condition>
      <isMultiVariationListing>false</isMultiVariationListing>
      <topRatedListing>false</topRatedListing>
    </item>
  </searchResult>
  <paginationOutput>
    <totalPages>27</totalPages>
    <totalEntries>2602</totalEntries>
    <pageNumber>1</pageNumber>
    <entriesPerPage>100</entriesPerPage>
  </paginationOutput>
  <itemSearchURL>http://www.ebay.com/sch/i.html?_nkw=harry+potter+phoenix&_ddo=1&_ipg=100&_pgn=1</itemSearchURL>
</findItemsByKeywordsResponse>

応答全体のうち、Title、Description、EndTime、ListType、currentprice のみを含む項目のリストまたは ObservableCollections が必要です。

これをコーディングする最も最適化された方法は何ですか。XML レスポンスを C# オブジェクトに直接逆シリアル化するなど、最も簡単な方法を考えることができません。

私はまだコードを試していませんが、これを達成する方法を現在混乱していますか?

4

2 に答える 2

3

最も最適化されていますか?XmlReaderベースのパーサーを作成します。適度に速い頭痛のない方法?XLinqを使用します。未テスト:

var items = XDocument.Parse(data)
    .Elements("findItemsByKeywordsResponse")
    .Elements("searchResult")
    .Elements("item")
    .Select(item =>
    {
        var li = item.Element("listingInfo");

        return new
        {
            Title = (string)item.Element("title"),
            EndTime = li != null ? (DateTime?)li.Element("endTime") : null,
            ListingType = li != null ? (string)li.Element("listingType") : null,
        };
    });
于 2013-03-10T17:43:41.267 に答える
2

解析が容易になるように、XML ではなく JSON バージョンを使用することをお勧めします。

RESPONSE-DATA-FORMAT を JSON に変更し、JSON データの解析に役立つTHIS BLOG POSTに記載されているプロセスに従います。それでも問題が解決しない場合は、ここで再度質問してください。

于 2013-03-10T17:28:16.560 に答える