*Yahoo!検索Webサービス ウェブ検索のXmlDocumentクラスでXMLデータを解析するサンプルコード(C#) [#zb19a5cc]

Yahoo!検索Webサービスのウェブ検索機能を使って検索を行うサンプルです。[[こちらのサンプル>../../C#]]と違い、xsd.exeを使わずに、XmlDocumentクラスでXMLデータを解析しています。

#code(csharp){{
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Button1_Click(object sender, EventArgs e)
    {
        //URLを構築する
        string requestUrl =
            "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch";
        //アプリケーションIDを指定(必ず指定すること)
        requestUrl += "?appid=XXXXX";
        //検索クエリー。UTF-8エンコードする。
        requestUrl += "&query=" + Server.UrlEncode(TextBox1.Text);

        //HttpWebRequestの作成
        System.Net.HttpWebRequest request =
            (System.Net.HttpWebRequest)System.Net.WebRequest.Create(
            requestUrl);
        System.Net.HttpWebResponse response = null;
        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
        try
        {
            //レスポンスの取得
            response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream strm = response.GetResponseStream();
            doc.Load(strm);
        }
        catch (Exception ex)
        {
            Label1.Text = "エラー:" + Server.HtmlEncode(ex.Message);
            return;
        }
        finally
        {
            if (response != null)
                response.Close();
        }

        //結果を表示
        System.Xml.XmlNamespaceManager xmlNSM =
            new System.Xml.XmlNamespaceManager(doc.NameTable);
        xmlNSM.AddNamespace("yjs", "urn:yahoo:jp:srch");
        System.Xml.XmlNode resultSet =
            doc.SelectSingleNode("//yjs:ResultSet", xmlNSM);
        Label1.Text = "";
        if (resultSet.Attributes["totalResultsReturned"].Value == "0")
        {
            Label1.Text += "該当するページが見つかりませんでした。";
        }
        else
        {
            Label1.Text += "<b>" + Server.HtmlEncode(TextBox1.Text) +
                "</b> の検索結果 約 " +
                resultSet.Attributes["totalResultsAvailable"].Value + "件中 " +
                resultSet.Attributes["firstResultPosition"].Value + " - " +
                resultSet.Attributes["totalResultsReturned"].Value + " 件目<br />\n";

            Label1.Text += "<ul>\n";
            foreach (System.Xml.XmlNode node in
                resultSet.SelectNodes("yjs:Result", xmlNSM))
            {
                Label1.Text += "<li><a href=\""
                    + node.SelectSingleNode("yjs:ClickUrl", xmlNSM).InnerText + "\">"
                    + node.SelectSingleNode("yjs:Title", xmlNSM).InnerText + "</a>";
            }
            Label1.Text += "</ul>\n";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Yahoo!ウェブ検索Webサービスのサンプル</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server"
         OnClick="Button1_Click" Text="検索" /><br />
        <br />
        <asp:Label ID="Label1" runat="server"
         EnableViewState="False"></asp:Label>
    </div>
    </form>

<!-- Begin Yahoo! JAPAN Web Services Attribution Snippet -->
<span style="margin:15px 15px 15px 15px">
<a href="http://developer.yahoo.co.jp/about">Webサービス by Yahoo! JAPAN</a>
</span>
<!-- End Yahoo! JAPAN Web Services Attribution Snippet -->
</body>
</html>
}}

//これより下は編集しないでください
#pageinfo(,2006-09-09 (土) 03:18:49,DOBON!,2006-09-09 (土) 03:18:49,DOBON!)

[ トップ ]   [ 編集 | 差分 | バックアップ | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]