[본문스크랩] .NET에서 XML활용 DOM객체 활용-1 DOM객체의 프로퍼티,함수들과 계층구조
DOM
전체 xml 문서가 메모리 캐시 된것(Document Object Model)이라 하고 DOM을 |
예제용 XML문서
<?xml version="1.0" encoding="utf-8" ?> |
기본적인 DOM객체 생성 및 루트 엘리먼트와 루트엘리먼트의 속성값들
public string pathURI=@"..\..\files\booklist.xml"; private void btnDomEx01_Click(object sender, EventArgs e) XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(pathURI); //xmldoc.LoadXml(); // 루트엘리먼트 : booklist 얻어오기 Console.WriteLine(rootElement.Name); } |
XmlDocument() 생성자로 루트노드 즉 문서 자체를 가르키는 루트노드를 뜻한다.
Load(URL) 지정된 URL에서 XML 문서를 로드해 노드들을 만든다.
DocumentElement 루트 엘리먼트를 의미하며 여기서는 booklist가 된다.
Name속성은 현재 엘리먼트의 이름값을 갖는 속성이다 LocalName은 접두사를 제거한 현재 노드의 이름이다.예를 들어, <bk:book> 요소에서 LocalName은 book이다. NamespaceURI는 엘리먼트에 네임스페이스 참조가 있을 경우에 그 네임스페이스를 값을 가지는 속성이다. |
마지막 자식 찾기(자식이름출력)
XmlElement firstBook= rootElement.FirstChild as XmlElement Console.WriteLine(firstBook.Name); |
형반환을 굳이 안해주고 rootElement.FirstChild.Name을 해줘도 같은결과가 나온다. 굳이 해준 이유는 XmlNode가 XmlElement의 부모클래스 이기 때문에 이런식으로 다운 캐스팅이 가능하다는 것을 보여주기 위해서이다. 아래에 클래스 계층구조가 있으니 참고하시길~ |
자식노드를 가져올 수 있는 속성들
현제엘리먼트.FirstChild |
첫 번째 자식을 가르킨다(속성자료형 XmlNode) 자식엘리먼트 1을 가지고 있음 |
현제엘리먼트.LastChild |
마지막 자식을 가르킨다(속성자료형 XmlNode) 자식엘리먼트 5를 가지고 있음 |
현제엘리먼트.FirstChild.NextSibling |
첫 번째 자식의 형제노드를 가르킨다(속성자료형 XmlNode) 자식엘리먼트1의 다음 형제인 자식엘리먼트2를 가지고 있음 |
현제엘리먼트.Lastchild.PrevioustSibling |
첫 번째 자식을 가르킨다(속성자료형 XmlNode) 자식엘리먼트4의 이전 형제인 자식엘리먼트3을 가르킴 |
현제엘리먼트.ChildNodes |
현제 엘리먼트의 자식을 가르킨다(속성자료형 XmlNodeList) 자식엘리먼트1,2,3,4 모두를 가지고 있음 컬렉션이기 때문에 ChildNodes[인덱스값]으로 노드들을 하나씩 가져올 수도 있다 |
XmlElement의 상속 계층구조
속성관련
XmlElement.HasAttributes |
해당엘리먼트의 속성이 있는지 true/false값을 반환 |
XmlElement.Attributes.Count; |
해당엘리먼트의 속성의 갯수가 몇개인지 int형으로 반환 |
XmlElement.GetAttribute("속성명") |
해당엘리먼트의 속성이 "속성명"과 같은 속성의 값을 반환 |
XmlElement.Attributes |
해당엘리먼트의 속성들의 컬렉션을 반환(XmlAttributeCollection) |