二十行C#代码打造Ruby Markup Builder
2010-09-30 21:05:26 来源:WEB开发网var xmlDoc = new XElement("persons",
new XElement("person",
"Tom",
new XAttribute("age", 10)),
new XElement("person",
"Jerry",
new XAttribute("age", 8)));
虽然LINQ to XML一直是所谓C# 3.0中LINQ特性的一部分,与LINQ to SQL,LINQ to Object及LINQ to……某个别的并列,但我始终认为LINQ to XML实则还是LINQ to Object的一种特殊形式,只是它用于操作XML而已。它的一切都是System.Xml.Linq命名空间下相关类库(如XElement)在起作用,不关LINQ什么事情。XElement等相关类型大大简化了我们的开发,与DOM API相比,无论是XML的构造还是读取都容易了许多。不过俗话说得好:“不怕不识货,就怕货比货”,这样的API与Ruby Markup Builder相比还是有明显差距。请看:
builder = Builder::XmlMarkup.new
xml = builder.persons { |b|
b.person("Tom", :age => "10")
b.person("Jerry", :age => "8")
}
请看上面这段代码,它自然没有使用Ruby语言的标准着色方式。我着色的目的是体现这个构造方式中的“噪音”——也就是与XML内容无关的部分。从中可以发现,Ruby不愧是一种噪音较少的语言,如果您尝试使用这个方式来观察C#中LINQ to XML的做法,就会发现两者之间的确有明显的差距。当然,如果使用VB.NET的XML Literal可能噪音也很少,但是在我看来,XML Literal在XML构造方面的表现有些罗嗦,例如它需要开发人员同时提供元素的开始标签和闭合标签,可能在IDE的帮助下此类代码输入较为简单,但是代码还是略显冗余。
更多精彩
赞助商链接