私はC#とXML経由でeBayを検索しようとしています。 XMLを文字列に書き出すことで有効なXML応答が得られるのがわかりますが、C#を使用してXMLを解析することはできません。私APPNAMEキーを削除してeBayのapi結果xmlを解析するときに要素が見つかりません
はここで、私のコードです:
string xmldata = "<?xml version='1.0' encoding='utf-8'?>";
xmldata += "<findItemsAdvancedRequest xmlns='http://www.ebay.com/marketplace/search/v1/services'>";
xmldata += "<keywords>sneakers</keywords>";
xmldata += "<categoryId>1</categoryId>";
xmldata += "<descriptionSearch>false</descriptionSearch>";
xmldata += "<paginationInput>";
xmldata += "<entriesPerPage>5</entriesPerPage>";
xmldata += "</paginationInput>";
xmldata += "</findItemsAdvancedRequest>";
string url = "http://svcs.ebay.com/services/search/FindingService/v1";
//Create a HttpWebRequest object
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
//Convert xml string to a byte array
byte[] postDataBytes = Encoding.ASCII.GetBytes(xmldata);
//Set the Method property
req.Method = "POST";
//Set the ContentType property of the "HttpWebRequest"
req.ContentType = "text/xml;charset=UTF-8";
req.Headers.Add("X-EBAY-SOA-SERVICE-NAME", "FindingService");
req.Headers.Add("X-EBAY-SOA-OPERATION-NAME", "findItemsAdvanced");
req.Headers.Add("X-EBAY-SOA-SERVICE-VERSION", "1.4.0");
req.Headers.Add("X-EBAY-SOA-GLOBAL-ID", "EBAY-GB");
req.Headers.Add("X-EBAY-SOA-REQUEST-DATA-FORMAT", "XML");
req.Headers.Add("X-EBAY-SOA-SECURITY-APPNAME: **********************");
//Set the ContentLength property of the "HttpWebRequest"
req.ContentLength = postDataBytes.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
requestStream.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
XDocument myXML = XDocument.Load(resp.GetResponseStream());
IEnumerable<XElement> elements = myXML.Root.Element("searchResult").Elements("item");
私は最後の行の様々な組み合わせを試してみた - 例えば子孫の数を取得、常に一致する要素ののバリエーションを取得しますメッセージ。私は結果がそこにあることを知っています:ブレークポイントを設定し、Visual StudioでmyXML変数を見ると、XMLはすべてルートにあるようです。
受信しているXMLを投稿した場合は、本当に役に立ちます。 – svick