解析Xml最有效的方法
.Net 框架現在(至少)有四種不同的讀取 Xml 字元串的方法。我已經使用了 XmlDocument、XmlReader、XPath 和 XElement 中的每一個,但是在編碼或執行期間哪個最有效?每個都是為不同的任務而設計的,優缺點是什麼?
更新: 使用 XmlReader 似乎是讀取 xml 的最快方法,這對我來說聽起來很合理,但有其局限性。我想知道 XmlDocument 和 Xlinq 在非順序訪問 xml 方面是否存在任何性能差異。
更新: 我發現一些文章比較了載入 xml 文件的不同方法。XmlReader 是最快的,XmlDocument 和 LINQ to XML 之間沒有顯著差異,直到您載入具有 10,000+ 個節點的文件,其中 LINQ to XML 排在前面。
- <http://www.nearinfinity.com/blogs/page/jferner?entry=performance_linq_to_sql_vs>
- <http://www.hanselman.com/blog/AtAGlanceXmlReaderVsXPathNavigatorVsXmlDocument.aspx>
三種最常見的閱讀方法是:
XmlDocument 它以樹狀結構讀取整個文件,然後可以使用 XPath 或通過瀏覽所有節點來訪問該文件。對於非常大的文件,它需要大量記憶體,因為必須將整個 XML 結構載入到記憶體中。對於較小的文件(少於幾兆)非常好且易於使用。
XmlReader 快速,但使用起來也很痛苦,因為它是順序的。如果您需要返回,則不能,而且 XML 結構通常很容易出現雜亂無章的順序。此外,如果您從非結束的 XML 流中讀取,這可能是唯一的方法。
XML 序列化 器 這基本上為您完成所有工作,您提供模型的根對象,它會為您創建和讀取 XML。但是,您幾乎無法控制結構,並且閱讀舊版本的對像是一種痛苦。所以這對於持久性來說不是很好。
XDocument 和 LINQ to XML 正如 Daniel Straight 指出的那樣。但我不知道足以發表評論。我邀請任何人編輯文章並添加缺失的資訊。
現在寫作是另一個故事。維護 XmlDocument 很痛苦,而 XmlWriter 使用起來很容易。
我想說,根據我的經驗,最好的組合是使用 XmlWriter 編寫並使用 XmlDocument 讀取。