bxdxmx3

きじれてじろあ なきがせすで あぷせとねでぶ

RubyだとXML出力するのすごく楽だ!・・・と思いきや意外とC#も

XMLを出力するのは意外と面倒くさい。
が、RubyだとDSLのように簡単にXMLの出力コードを記述することができる。

このライブラリを使用する。
※標準でDSLのように記述できるライブラリが入っていればいいのに・・・

Builder for Markup

まずはgem install

gem install builder

Successfully installed builder-2.1.2
1 gem installed
Installing ri documentation for builder-2.1.2...
Updating class cache with 1261 classes...
Installing RDoc documentation for builder-2.1.2...

code(ruby)

require 'builder/xmlmarkup'

xml = Builder::XmlMarkup.new(:indent=>2)
p xml.Data {
  xml.RegistrationName( :Name => "Hello", :First => "Last" ) {
    xml.WindowInfo{
      xml.E("uuu")
      xml.AAAA("ooo")
    }
  }
}

出力結果


  
    
      uuu
      ooo
    
  

すごく簡単にXMLの出力ができる。
ほとんどXMLをそのまま書いているような感じ。
実装的にはmethod_missingをフックしてあれこれやってるんだろう。

C#じゃこうはいかないよね?

普段C#を使っていて、こんな風に簡単にXMLが書ければいいのになぁ・・・
と思っていたら同じようなことができることをさっき知った。

code(C#:XLINQ)

Console.WriteLine(
    new XElement("Data",
        new XElement("RegistrationName", new XAttribute("Name", "Hello"), new XAttribute("First", "Last"),
	    new XElement("WindowInfo",
		new XElement("E", "uuu"),
		new XElement("AAAA", "ooo")
	    )
	)
    )
);

・・・今まで.Add(〜)とひたすらやっていた時間を返してー