티스토리 뷰

Network/XML

XML.net 기본 정리

알 수 없는 사용자 2010. 7. 15. 04:54

출처 :  http://blog.naver.com/sangsanq/50014598176

 

1.XML Read

XmlReader
-> XmlTextReader, XmlNodeReader, XmlValidatingReader
-> XmlTextReader, FileStream을 통해 XML문서를 로드

XmlNodeReader
-> 스트림 대신 XmlNode를 소스로 사용

XmlValidatingReader
-> XML문서에 대한 유효성 검사
-> XmlTextReader의 모든 기능 포함 + ValidationType, Schemas, SchemaType
-> ValidationType : Auto, DTD, Schema, XDR, None

2.XML Write
XmlWriter
->  XmlTextWriter 를 이용하여 XML 문서 생성

Ex)
XmlTextWriter tw = new XmlTextWriter("파일명",인코딩방식);
tw.Formatting = Formatting.Indented;
tw.WriteStartDocument(); // Xml 문서 시작
tw.WriteStartElement("genre","Mystery");
  .
  .
  .
tw.WriteEndDcoumnet();
tw.Flush();
tw.Close();

3.DOM
-> XmlNode : XML문서의 노드를 나타내는 추상 클래스 XmlNode 클래스를 통해 구현
-> XmlNodeList : XML노드들의 순서화된 리스트
-> 이 두개의 클래스가 .NET 프레임워크의 DOM의 핵심

Ex)
XmlDocument doc = new XmlDocument();
doc.Load("파일경로");
XmlNodeList nl = doc.GetElementByTagName("노드명");
foreach(XmlNode node in nl) MessageBox.show(node.InnerText);

4.XPath
-> XML문서에 대한 빠른 반복문 수행과 데이터 추출을 위해 만들어짐.
XPathDocument : XML문서의 뷰,readony. 문서 Load 4개 오버로드(파일과 경로문자열, TextReader,XmlReader, Stream 기본객체)
XPathNavigator : XPathDocument 탐색
XpathNodeIterator : 노드집합에 대한 반복문 수행
XPathExpression : 검색 식. ex) "/bookstore/book[@genre='novel']"
XPathException
=> XPathNavigator : 생성시 XPathDocument를  IXPathNavigator 인터페이스로 캐스트
=> XPathNodeIterator : 처리할 노드의 서브셋 추출시 모든 Select 메소드들은 XPathNodeIterator 객체 반환
Ex)
XPathDocument doc=new XPathDocument("..\\booksxpath.xml");
XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
XPathNodeIterator iter=nav.Select("/bookstore/book[@genre='novel']");
while(iter.MoveNext()) {
  MessageBox.Show(iter.Current);
}

5.XslTransform
=> xsl (스타일시트) 문서 변경시 사용

6.ADO.NET <=> XML

DataBase 자료 => DataSet 클래스의 WriteXml 메소드 이용하여 XML 문서 생성.
  ex ) string file = "c:\test\prod.xml";
   ds.WriteXml(file);
XML => DataSet readXml => DataGrid, ListBox

DiffGram  => 편집 전후의 데이터를 포함하고 있는 XML 문서, 데이터 변경,추가,삭제의 조합도 포함.

6.Serialization
-> 어떤 객체를 구하여 디스크에 저장하는 과정
-> 객체의 public 프로퍼티와  public 필드를 XML의 element, attribute 로 변환 by XmlSerializer
-> Serialize를 통해 특정 객체의 상태를 XML형식의 문서로 변환

Ex)
Products pd = new Products();
pd.property = X; // 프로퍼티 설정
TextWriter tr = new StreamWriter("XML 파일");
XmlSerialize sr = new XmlSerializer(typeof(Object));
sr.Serialize(tr,pd);
tr.Close();

7.Deserialization
-> 직렬화 이전상태로 돌아가는것
-> XML문서를 Deserialize를 통해 Serialize 이전상태의 객체로 환원하는것.
-> Deserialize 을 통해 Xml 문서를 객체를 참조하듯 사용할 수 있음.

Ex)
Products newPd;
FileStream f = new FileStream("XML 파일");
XmlSerializer  newSr = new XmlSerializer(typeof(Products));
newPd = (Products)newSr.Deserializer(f);
listBox1.Items.Add(newPd.ProductName);
f.close();

'Network > XML' 카테고리의 다른 글

A Guide to XML Import QuarkXTensions Software  (0) 2008.02.20