BizTalk Utilities CV ,   Jobs ,   Code library
 
Go to the front page to continue learning about XML or select below:

Contents

ReBlogger Contents

Previous posts in .NET XML, System.XML

 
 
Page 15873 of 20224

XLinq Bitter Words, Part I - XML functional construction

Blogger : Oleg Tkachenko
All posts : All posts by Oleg Tkachenko
Category : .NET XML, System.XML
Blogged date : 2005 Sep 23

XLinq is new and hot technology everybody seems to be happy with. I`m going to post a different review series - not what I like, but what I dislike and want to be fixed in XLinq. Sorry in advance for bitter words, but it`s better when your friend says them.

XML functional construction

XML Tree functional construction is a great stuff and definitely a big improvement over the upside down DOM-style XML building. I only wanted to note that one doesn`t have to wait years for C# 3.0 to be able to build XML tree in a natural top-down way, that was actually possible from the very beginning (here is .NET 2.0 sample, in .NET 1.X one would need XmlNodeWriter):

    XmlDocument doc = new XmlDocument();    
    XmlWriter w = doc.CreateNavigator().AppendChild();
    w.WriteStartElement("contacts");
      w.WriteStartElement("contact");
        w.WriteElementString("name", "Patrick Hines");
        w.WriteStartElement("phone");
          w.WriteAttributeString("type", "home");
          w.WriteString("206-555-0144");
        w.WriteEndElement();
        w.WriteStartElement("phone");
          w.WriteAttributeString("type", "work");
          w.WriteString("425-555-0145");
        w.WriteEndElement();
        w.WriteStartElement("address");
          w.WriteElementString("street1", "123 Main St");
          w.WriteElementString("city", "Mercer Island");
          w.WriteElementString("state", "WA");
          w.WriteElementString("postal", "68042");
        w.WriteEndElement();
      w.WriteEndElement();
    w.WriteEndElement();
    w.Close();
Should admit XLinq`s functional construction still looks shorter and tree-friendly, but it is seriously constrained to building only XLinq XML tree in-memory. If one day you decide that building in-memory XML tree just to be saved to a disk is a waste of memory (and it is a waste), you would need to rewrite completely XML construction code and that`s bad. XmlWriter has no limits here - you can use it for building XML tree in memory or writing XML directly to a stream in a fast efficicent non-caching way. XmlWriter just does its job - writes XML with no coupling to the result and that`s way any code that produces XML with XmlWriter is more reusable.

Ergo - please don`t repeat System.Xml mistakes and treat XmlWriter as a first class citizen - provide a way to build XDocument/XElement with XmlWriter, that will be good architecturally and will provide smoother migration from XmlDocument v2. E.g. what about providing an editable XPathNavigator over XElement or XDocument

To be continued...


Read comments or post a reply to : XLinq Bitter Words, Part I - XML functional construction
Page 15873 of 20224

Newest posts
 

    Email TopXML