.NET TIPS 相対URLを絶対URLに変換するには?デジタルアドバンテージ2003/08/02 |
|
|
HTMLを解析して、それに含まれるリンクを抽出するような場合、相対URLを絶対URLに変換する処理が必要となることがある。
例えば、@ITのサイトのトップページ(http://www.atmarkit.co.jp/index.html)に次のようなリンクが含まれているとしよう。
<a href="/fdotnet/index.html">Insider.NETへ</a>
ここでリンク先のURLである「/fdotnet/index.html」はトップページからの相対URLであり、その絶対URLは「http://www.atmarkit.co.jp/fdotnet/index.html」となる。
相対URLがスラッシュから始まっている場合には、文字列の操作により絶対URLを作成するのは容易だが、相対URLは「fdotnet/index.html」や「../index.html」といった記述も可能だ。このような場合には絶対URLを作成するのは少々めんどうな作業となる。
Uriクラス(System名前空間)を使用すれば、こういった相対URLを絶対URLに簡単に変換することができる。UriクラスはURI(Uniform Resource Identifier)を表現するためのものだ(リソースの位置を示すURLはURIの1つの形式である)。
変換にはまず、ベースとなる絶対URLに対するUriクラスを作成する。
Uri baseURL = new Uri("http://www.atmarkit.co.jp/index.html");
次に2つのパラメータをとるバージョンのコンストラクタを使用して、別のUriオブジェクトを作成する。パラメータには、今作成したベースURLを示すUriオブジェクトと、相対URLとなる文字列を指定する。
URi destURL = new Uri(baseURL, "/fdotnet/index.html");
このコンストラクタでは、ベースURLと相対URLが組み合わされたURLを基にしてUriオブジェクトが作成される。Uriオブジェクトからは、AbsoluteUriプロパティにより、その絶対URLを得ることができる。
次のサンプル・プログラムはいくつかの書式の相対URLを絶対URLに変換している例を示すものだ。
|
|
いくつかの書式の相対URLを絶対URLに変換するC#のサンプル・プログラム(uri.cs) | |
サンプル・プログラム中の最後の例からも分かるように、コンストラクタの第2パラメータに絶対URLを指定した場合には、そのURLがAbsoluteUriプロパティに設定される。このためHTMLに含まれるリンク(URL)をすべて絶対URLに変換するような場合には、そのリンクが相対か絶対かを区別せずに処理することができる。
カテゴリ:クラス・ライブラリ 処理対象:URL 使用ライブラリ:Uriクラス(System名前空間) |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|