とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

Visual Basic 2008 の新機能 - XML その4(Visual Basic コンパイラの仕事。) -

暇に感けて装いも新たに・・・なっていないとりこらぼですが、いかがお過ごしでしょうか?とりこびとです、こんにちは♪

前回はXML へのアクセスについておべんきょしたことを書きました。

Visual Basic 2008 の新機能 - XML その3(XML へのアクセス。) -

ここまでVisual Basic 2008では XML リテラルがサポートされていろいろ出来るよってことを知ることができましたが、あくまでVisual Basic 2008 の新機能なわけなんですよね。言語の新機能なのです。ってことはコンパイラさんがいろいろやってくれている感じですよね?よね?


・・・気になる。


というわけでこの XML、仕組みを調べてみようと思います。MSDNでは、

MSDN : XML リテラルの概要

に、「コンパイラによる XML リテラルからのオブジェクトの作成方法 」っていうのがありますね。言語仕様だと、ここらあたり↓です。

Visual Basic Language Specification Version 9.0 : 11.23 XML Literal Expressions

なるほど、Visual Basic コンパイラさんはSystem.Xml.Linq 名前空間に含まれるクラスを使用したコードに変換するわけですね。XElement クラスや、XAttribute クラスなどなど、です。

じゃ、以下のコードはどう変換されるのでしょう?自力で置き換えてみます。

Option Strict On
Option Infer On
Imports System.Xml.Linq
Module Program
    Sub Main()
        Dim ちら裏 = _         <ちら裏>             <ソルジャー>                 <Name>ながせ</Name>                 <Url Type="わんくま">http://blogs.wankuma.com/nagase/</Url>                 <Url Type="ちら裏">http://d.hatena.ne.jp/udongein/</Url>             </ソルジャー>             <ソルジャー>                 <Name>とりこびと</Name>                 <Url Type="わんくま">http://blogs.wankuma.com/torikobito/</Url>                 <Url Type="ちら裏">http://d.hatena.ne.jp/torikobito/</Url>             </ソルジャー>         </ちら裏>
    End Sub
End Module

さっそくXElement クラスから作成して・・・コンストラクタにまたXElement クラスを渡せるのね。あ、XName クラスってのを渡せるのか、これがベタな作り方かな?・・・ってXName クラスにはパブリックコンストラクタ無いやん・・・。orz


まぢまぢ見てみます↓まぢまぢまぢまぢまぢまぢまぢまぢ。

MSDN : XName クラス

XName には、パブリック コンストラクタが用意されていません。代わりに、このクラスでは、String からの暗黙の型変換を実行して、XName を作成できます。

どうやら、XName クラスはString型から暗黙の型変換できる様子です。

さらにまぢまぢ見てみます↓まぢまぢまぢまぢまぢまぢまぢまぢ。あれ?こんなのもある・・・。

MSDN : XName.Get メソッド(# っていうか、何をGetするのやら・・・。)

このメソッドには、XName を作成できるようにするオーバーロードが用意されています。このオブジェクトは、"{namespace}localname" という形式の拡張 XML 名を指定する方法でも、名前空間とローカル名を個別に指定する方法でも作成できます。

より一般的で簡単な XName の作成方法は、文字列からの暗黙の型変換を使用することです。

あ、そうですか。でもXNameで書いちゃいますw・・・えっとルートは'ちら裏'ですね・・・ごそごそごそごそ・・・。

Option Strict On
Option Infer On
Imports System.Xml.Linq
Module Program
    Sub Main()
        Dim ちら裏 = New XElement(XName.Get("ちら裏"))
        Dim ながせさん = New XElement(XName.Get("ソルジャー"))         ながせさん.Add(New XElement(XName.Get("Name"), "ながせ"))         ' わんくまのほう。         Dim ながせさんのURL = New XElement(XName.Get("Url"), "http://blogs.wankuma.com/nagase/")         ながせさんのURL.Add(New XAttribute(XName.Get("Type"), "わんくま"))         ながせさん.Add(ながせさんのURL)         ' ちら裏のほう。         ながせさんのURL = New XElement(XName.Get("Url"), "http://d.hatena.ne.jp/udongein/")         ながせさんのURL.Add(New XAttribute(XName.Get("Type"), "ちら裏"))         ながせさん.Add(ながせさんのURL)         ちら裏.Add(ながせさん)
        Dim とりこびと = New XElement(XName.Get("ソルジャー"))         とりこびと.Add(New XElement(XName.Get("Name"), "とりこびと"))         ' わんくまのほう。         Dim とりこびとのURL = New XElement(XName.Get("Url"), "http://blogs.wankuma.com/torikobito/")         とりこびとのURL.Add(New XAttribute(XName.Get("Type"), "わんくま"))         とりこびと.Add(とりこびとのURL)         ' ちら裏のほう。         とりこびとのURL = New XElement(XName.Get("Url"), "http://d.hatena.ne.jp/torikobito/")         とりこびとのURL.Add(New XAttribute(XName.Get("Type"), "ちら裏"))         とりこびと.Add(とりこびとのURL)
        ちら裏.Add(とりこびと)
    End Sub
End Module

こんな感じですかね・・・疲れた・・・。orz


というわけで、XML リテラルってのは、Visual Basic コンパイラさんが私のためにけっこうがんばってくれてる感じですね♪

投稿日時 : 2008年2月25日 15:43

Feedback

# re: Visual Basic 2008 の新機能 - XML その4(Visual Basic コンパイラの仕事。) - 2008/02/25 20:26 JZ5

ながせさんって命名が気になるなーw
私ならソルジャーってしてを使いまわしかな。

タイトル
名前
Url
コメント