LINQ to XML vs. XmlReader

2019-05-02 16:15发布

问题:

In my Silverlight application I'm using mostly XmlReader but I'm playing with idea to replace XmlReader implementation with LINQ to XML.

What are pros and cons between LINQ to XML and XmlReader in Silverlight?

回答1:

PROs of Linq to XML

  • Query XML documents with the same LINQ syntax your used to
  • Uses the same X objects that you're used to working with (XElement, etc.)

PROs of using XmlReader

  • Finer grain control over the query syntax (XPath rather than LINQ)

...personally, I switched to LINQ to XML when it was first introduced and never looked back. Haven't noticed any significant performance degradation as of yet.



回答2:

I would just use LINQ to XML in Silverlight.

The one advantage that XmlReader has over LINQ is that it doesn't build a DOM in memory but rather moves over an existing stream. However this difference only really comes into its own if you can start processing the stream as its arriving rather than waiting for the entire content to arrive. This advantage is quite difficult to acheive and only rarely useful.

LINQ to XML is much more straight forward to query and considerably more flexiable to use, the trade off is some extra memory.



回答3:

LINQ to XML is easier however it requires referencing in System.XML.Linq which increases the number of assemblies your Silverlight application will need to load in. so depending on your situation and your feeds, it sometimes is useful to use XMLReader.