2016-08-23 22 views
0

私の問題は、私が必要とするノードのリストを取得できないようです。私は複数のソリューションを試して、それは動作していないようです。これは私のxmlファイルの一部です:XMLで特定のノードが見つかりません

<findItemsByCategoryResponse xmlns="http://www.ebay.com/marketplace/search/v1/services"> 
    <ack>Success</ack> 
    <version>1.13.0</version> 
    <timestamp>2016-08-23T07:33:22.497Z</timestamp> 
    <searchResult count="100"> 
     <item> 
      <itemId>152210133431</itemId> 
      <title>...</title> 
      <globalId>EBAY-GB</globalId> 
      <primaryCategory> 
       <categoryId>218</categoryId> 
       <categoryName>Magic the Gathering</categoryName> 
      </primaryCategory> 
      <galleryURL> 
http://thumbs4.ebaystatic.com/m/meIDrVqhmbpQMYCxzeUvR9Q/140.jpg 
</galleryURL> 
      <viewItemURL> 
http://www.ebay.co.uk/itm/MTG-See-Unwritten-Khans-Tarkir-MYTHIC-MINT-/152210133431 
</viewItemURL> 
      <paymentMethod>PayPal</paymentMethod> 
      <autoPay>false</autoPay> 
      <location>London,United Kingdom</location> 
      <country>GB</country> 
      <shippingInfo> 
       <shippingServiceCost currencyId="GBP">1.1</shippingServiceCost> 
       <shippingType>Flat</shippingType> 
       <shipToLocations>GB</shipToLocations> 
      </shippingInfo> 
      <sellingStatus> 
       <currentPrice currencyId="GBP">0.5</currentPrice> 
       <convertedCurrentPrice currencyId="GBP">0.5</convertedCurrentPrice> 
       <bidCount>0</bidCount> 
       <sellingState>Active</sellingState> 
       <timeLeft>P0DT0H19M12S</timeLeft> 
      </sellingStatus> 
      <listingInfo> 
       <bestOfferEnabled>false</bestOfferEnabled> 
       <buyItNowAvailable>false</buyItNowAvailable> 
       <startTime>2016-08-18T07:52:34.000Z</startTime> 
       <endTime>2016-08-23T07:52:34.000Z</endTime> 
       <listingType>Auction</listingType> 
       <gift>false</gift> 
      </listingInfo> 
      <condition> 
       <conditionId>1000</conditionId> 
       <conditionDisplayName>New</conditionDisplayName> 
      </condition> 
      <isMultiVariationListing>false</isMultiVariationListing> 
      <topRatedListing>false</topRatedListing> 
     </item> 
    </searchResult> 
    <paginationOutput>...</paginationOutput> 
    <itemSearchURL>...</itemSearchURL> 
</findItemsByCategoryResponse> 

は、通常、私はちょうどファイルを短絡し、このxmlファイルで100個の項目のノードが、あります。私は 'item' 'ノードとすべての内部をXmlNodeListで取得しようとしましたが、デバッグするときに0個の項目が含まれていると言います。この後、コードでわかるように、いくつかのデータを取得したいと思います。注:私は多くのxpath値を試しました! ここで私が使用したコードは次のとおりです。

  XmlDocument xmlText = new XmlDocument(); 
      xmlText.Load(basicUrl); 
      XmlElement root = xmlText.DocumentElement; 
      XmlNodeList xnList = root.SelectNodes("//item"); 
      foreach(XmlNode item in xnList) 
      { 
       string title = item["title"].InnerText; 
       Console.WriteLine(title); 
      } 

答えて

1

のXPath式は常に名前空間を認識している(Elementは名前空間を持っているならば、XPathは、名前空間でそれを参照する必要があります)。また、XPath式では、 'default'名前空間は常にURI ""にあります。名前空間と

 XmlDocument xmlText = new XmlDocument(); 
     xmlText.Load(yourXml); 
     XmlElement root = xmlText.DocumentElement; 
     XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlText.NameTable); 
     nsmgr.AddNamespace("t", "http://www.ebay.com/marketplace/search/v1/services"); 
     XmlNodeList xnList = xmlText.SelectNodes("//t:item", nsmgr); 
     foreach (XmlNode item in xnList) 
     { 
      string title = item["title"].InnerText; 
      Console.WriteLine(title); 
     } 

SELECTNODES:あなたのケースでは、このような何かを行う必要があります

https://msdn.microsoft.com/en-US/library/4bektfx9(v=vs.110).aspx

+0

どのようにこれは/助けることができるでしょう_why_説明についてはどうですか? –

+0

それを理解していないとうまくいかないようですが、もう少し情報をくれますか?または、Xpathの代わりにlinqを使って検索することもできますか? – Wouter

+0

XpathはXMLで検索するための非常に良い方法です。私は自分の答えを編集しました(私は質問で提供されたxmlでコードをテストしました) –

関連する問題