このページでは LINQ to XML と DOM の違いをまとめています。
- 言語は C# です。
- DOM は
using System.Xml;
LINQ to XML は using System.Xml.Linq;
が必要です。
- XPath を使用する場合は
using System.Xml.XPath;
が必要です。
型の比較表
|
DOM |
LINQ to XML |
ドキュメント |
XmlDocument |
XDocument |
ノード |
XmlNode |
XNode |
要素 |
XmlElement |
XElement |
テキスト |
XmlText |
XText |
コメント |
XmlComment |
XComment |
処理命令 |
XmlProcessingInstruction |
XProcessingInstruction |
フラグメント |
XmlDocumentFragment |
なし |
操作の比較表
|
DOM |
LINQ to XML |
要素の生成 |
el = doc.CreateElement("a"); |
el = new XElement("a"); |
生成 (+名前空間) |
el = doc.CreateElementNS("a", "..."); |
el = new XElement((XNamespace) "..." + "a"); |
追加 |
parent.AppendChild(child); |
parent.Add(child); |
追加 (手前) |
parent.InsertBefore(el, refEl); |
refEl.AddBeforeSelf(el); |
取得 (タグ名) |
doc.GetElementsByTagName("a"); |
doc.Descendants("a"); |
取得 (ID) |
doc.GetElementById("..."); |
doc.Descendants().FirstOrDefault( el => (string)el.Attribute("id") == "..."); |
取得 (XPath) |
doc.SelectNodes("//a"); |
doc.XPathSelectElements("//a"); |
取得 (親) |
parent = el.ParentNode; |
parent = el.Parent; |
取得 (次) |
el2 = el.SelectSingleNode("following-sibling::*"); |
el2 = el.ElementsAfterSelf().FirstOrDefault(); |
取得 (前) |
el2 = el.SelectSingleNode("preceding-sibling::*"); |
el2 = el.ElementsBeforeSelf().FirstOrDefault(); |
ノードの取得 (次) |
n = el.NextSibling; |
n = el.NextNode; |
取得 (前) |
n = el.PreviousSibling; |
n = el.PreviousNode; |
属性の取得 |
el.GetAttribute("href"); |
(string)el.Attribute("href"); |
設定 |
el.SetAttribute("href", "..."); |
el.SetAttributeValue("href", "..."); |
テキストの取得 |
var text = el.InnerText; |
var text = el.Value; |
設定 |
el.InnerText = "text"; |
el.Value = "text"; |
参考