LINQ to XML은 LINQ를 사용할 수 있는 in-memory XML programming interface이다.
LINQ to XML은 XML document를 memory로 가져온 DOM(Document Object Model)과 같다. document를 쿼리, 수정이 가능하고 수정 후 파일로 저장, serialize 가능하다. 하지만 DOM과 아래내용이 다르다.
- 가벼운 object model을 제공하며, 다루기 쉽다.
- C# 언어의 이점을 가진다.
- Language-Integrated Query(LINQ)를 사용할 수 있다.
쿼리를 사용하여 in-memory XML document의 elements, attributes를 가져올 수 있다. XPath와 XQuery와 비교될 수 있지만, 더 강력한 typing, compile-time checking, debugger 지원을 제공한다.
XML Tree 만들기
<Contacts>
<Contact>
<Name>Patrick Hines</Name>
<Phone Type="Home">206-555-0144</Phone>
<Address>
<Street1>123 Main St</Street1>
<City>Mercer Island</City>
</Address>
</Contact>
</Contacts>
1. XmlDocument 방식으로 만들기
bottom up방식으로 만든다.
맨처음 document를 만들고, elements를 만드록 document에 elements를 추가하는 방식이다.
XmlDocument doc = new XmlDocument();
XmlElement name = doc.CreateElement("Name");
name.InnerText = "Patrick Hines";
XmlElement phone1 = doc.CreateElement("Phone");
phone1.SetAttribute("Type", "Home");
phone1.InnerText = "206-555-0144";
XmlElement street1 = doc.CreateElement("Street1");
street1.InnerText = "123 Main St";
XmlElement city = doc.CreateElement("City");
city.InnerText = "Mercer Island";
XmlElement address = doc.CreateElement("Address");
address.AppendChild(street1);
address.AppendChild(city);
XmlElement contact = doc.CreateElement("Contact");
contact.AppendChild(name);
contact.AppendChild(phone1);
contact.AppendChild(address);
XmlElement contacts = doc.CreateElement("Contacts");
contacts.AppendChild(contact);
doc.AppendChild(contacts);
2. LINQ to XML 방식으로 만들기
document object를 만들지 않는다. document의 root level이 필요하면, XDocument class를 사용한다.
XElement contacts =
new XElement("Contacts",
new XElement("Contact",
new XElement("Name", "Patrick Hines"),
new XElement("Phone", "206-555-0144",
new XAttribute("Type", "Home")),
new XElement("Address",
new XElement("Street1", "123 Main St"),
new XElement("City", "Mercer Island"),
)
)
);
들여쓰기 코드로 인해, XML 구조를 볼 수 있다.
Static method for loading XML
LINQ to XML은 XML load시 사용하는 static method를 제공한다.
1. XmlDocument 방식으로 만들기
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"books.xml");
2. LINQ to XML 방식으로 만들기
XElement.Load(@"books.xml");
XmlDocumentFragment class와 동일한 기능의 class는 LINQ to XML에서 제공하지 않는다.
LINQ to XML은 XPathNavigator를 제공한다.
'C#' 카테고리의 다른 글
YouTube Data API ] 재생목록의 동영상리스트 데이터 가져오기 (0) | 2022.06.17 |
---|---|
C# 9, 10) record의 정의, 사용법, class와 다른 점 (0) | 2022.01.06 |
C#] Value type은 어디에 저장되는가? Stack or Heap?? (0) | 2021.12.24 |
C#] 제네릭 제약조건 : where, default 연산자 (0) | 2021.12.16 |
C#] 값 형식 VS 참조 형식 (0) | 2021.12.16 |
댓글