ASP.NET XmlDocument 클래스 상세 설명

21011 단어 ASP.NETXmlDocument
XmlDocument 류 는.NET 프레임 워 크 의 DOC 해상도 입 니 다.XmlDocument 는 XML 을 트 리 구조 로 보고 XML 문 서 를 불 러 오고 메모리 에 이 문서 의 트 리 구 조 를 구축 합 니 다.다음은 XmlDocument 가 어떤 기능 을 제공 하 는 지 살 펴 보 겠 습 니 다.
1.속성:
Attributes 는 이 노드 의 속성 을 포함 하 는 XmlAttribute Collection 을 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
BaseURI        현재 노드 의 기본 URI 가 져 오기(XmlNode 를 다시 씁 니 다.::.BaseURI.)
ChildNodes 에서 노드 의 모든 하위 노드 를 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
DocumentElement 에서 문서 의 루트 XmlElement 를 가 져 옵 니 다.
DocumentType 은 DOCTYPE 성명 을 포함 하 는 노드 를 가 져 옵 니 다.
First Child 노드 의 첫 번 째 키 레벨 을 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
HasChildNodes 에서 값 을 가 져 옵 니 다.이 값 은 노드 에 어떤 하위 노드 가 있 는 지 를 표시 합 니 다.(XmlNode 에서 계승 합 니 다.)
Implementation     현재 문서 의 XmlImplementation 대상 을 가 져 옵 니 다.
InnerText        노드 와 모든 하위 노드 의 직렬 값 을 가 져 오 거나 설정 합 니 다.(XmlNode 에서 계승 합 니 다.)
InnerXml 현재 노드 의 하위 단 계 를 표시 하 는 표 시 를 가 져 오 거나 설정 합 니 다.(XmlNode 를 다시 씁 니 다.:.InnerXml.)
IsReadOnly 는 현재 노드 가 읽 기만 하 는 지 여 부 를 표시 하 는 값 을 가 져 옵 니 다.(XmlNode 를 다시 씁 니 다.:.IsReadOnly.)
아 이 템 이 다시 실 렸 습 니 다.
LastChild 노드 의 마지막 하위 레벨 을 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
LocalName 에서 노드 의 로 컬 이름 을 가 져 옵 니 다.(XmlNode 를 다시 씁 니 다.:.LocalName.)
Name 노드 의 한 정 된 이름 을 가 져 옵 니 다.(XmlNode 를 다시 씁 니 다.:.Name.)
NamespaceURI 는 이 노드 의 네 임 스페이스 URI 를 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
Nametable 은 이와 연 결 된 XmlNametable 을 가 져 옵 니 다.
NextSibling       이 노드 에 이 어 진 노드 를 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
NodeType 은 현재 노드 의 종 류 를 가 져 옵 니 다.(XmlNode 를 다시 씁 니 다.:.Node Type.)
OuterXml        이 노드 와 모든 하위 노드 를 표시 하 는 표 시 를 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
OwnerDocument 는 현재 노드 에 속 한 XmlDocument 를 가 져 옵 니 다.(XmlNode 를 다시 씁 니 다.:.ownerDocument.)
ParentNode       무 거 운 짐 을 실 었 습 니 다.
Prefix          이 노드 의 네 임 스페이스 접 두 사 를 가 져 오 거나 설정 합 니 다.(XmlNode 에서 계승 합 니 다.)
PreserveWhitespace  값 을 가 져 오 거나 설정 합 니 다.이 값 은 요소 내용 에 공백 을 유지 할 지 여부 입 니 다.
Previous Sibling 은 이 노드 앞 에 있 는 노드 를 가 져 옵 니 다.(XmlNode 에서 계승 합 니 다.)
SchemaInfo 가 노드 의 후 구조 검증 정보 집합(PSVI)을 되 돌려 줍 니 다.(XmlNode 를 다시 씁 니 다.::.schemaInfo.)
Schemas 는 이 XmlDocument 와 연 결 된 XmlSchemaset 대상 을 가 져 오 거나 설정 합 니 다.
Value 노드 의 값 을 가 져 오 거나 설정 합 니 다.(XmlNode 에서 계승 합 니 다.)
XmlResolver 는 외부 자원 을 분석 하기 위해 XmlResolver 를 설정 합 니 다.
방법
AppendChild              지정 한 노드 를 이 노드 의 하위 노드 목록 의 끝 에 추가 합 니 다.(XmlNode 에서 계승 합 니 다.)
Clone                   이 노드 의 복사 본 을 만 듭 니 다.(XmlNode 에서 계승 합 니 다.)
CloneNode               이 노드 의 복사 본 을 만 듭 니 다.(XmlNode 를 다시 씁 니 다.::.CloneNode(Boolean).
CreateAttribute 가 다시 불 러 왔 습 니 다.지정 한 이름 을 가 진 XmlAttribute 를 만 듭 니 다.
CreateCDataSection 지정 한 데 이 터 를 포함 하 는 XmlCDataSection 을 만 듭 니 다.
CreateComment 지정 한 데 이 터 를 포함 하 는 XmlComment 을 만 듭 니 다.
CreateDefaultAttribute         지정 한 접두사,로 컬 이름과 네 임 스페이스 URI 가 있 는 기본 속성 을 만 듭 니 다.
CreateDocumentFragment        XmlDocumentFragment 를 만 듭 니 다.
CreateDocumentType          새 XmlDocumentType 대상 을 되 돌려 줍 니 다.
CreateElement             무 거 운 짐 을 실 었 습 니 다.XmlElement 를 만 듭 니 다.
CreateEntityReference          지정 한 이름 을 가 진 XmlEntity Reference 를 만 듭 니 다.
CreateNavigator 가 다시 불 러 왔 습 니 다.이 문 서 를 탐색 할 새 XPath Navigator 대상 을 만 듭 니 다.
CreateNode              무 거 운 짐 을 실 었 습 니 다.XmlNode 를 만 듭 니 다.
CreateProcessingInstruction 은 지정 한 이름과 데 이 터 를 가 진 XmlProcessingInstruction 을 만 듭 니 다.
CreateSignificantWhitespace 는 XmlSignificantWhitespace 노드 를 만 듭 니 다.
CreateTextNode 에서 지정 한 텍스트 가 있 는 XmlText 를 만 듭 니 다.
Create Whitespace 에서 XmlWhitespace 노드 를 만 듭 니 다.
CreateXmlDeclaration 지정 한 값 을 가 진 XmlDeclaration 노드 를 만 듭 니 다.
GetElement ById 에서 지정 한 ID 를 가 진 XmlElement 를 가 져 옵 니 다.
GetElementsByTagName        무 거 운 짐 을 실 었 습 니 다.지정 한 이름과 일치 하 는 모든 하위 요소 의 목록 을 포함 하 는 XmlNodeList 를 되 돌려 줍 니 다.
GetEnumerator 는 XmlNode 의 노드 에 있 는"for each"스타일 의 교체 에 대한 지원 을 제공 합 니 다.(XmlNode 에서 계승 합 니 다.)
GetHashCode              특정 유형의 해시 함수 로 사용 합 니 다.(Object 로부터 상속 합 니 다.)
GetNamespaceOfPrefix         현재 노드 범위 내 에서 주어진 접두사 에서 가장 가 까 운 xmlns 성명 을 찾 고 성명 의 네 임 스페이스 URI 를 되 돌려 줍 니 다.(XmlNode 에서 계승 합 니 다.)
GetPrefixOfNamespace         현재 노드 범위 내 에서 주어진 네 임 스페이스 URI 에서 가장 가 까 운 xmlns 성명 을 찾 고 성명 에서 정 의 된 접 두 사 를 되 돌려 줍 니 다.(XmlNode 에서 계승 합 니 다.)
ImportNode 는 노드 를 다른 문서 에서 현재 문서 로 가 져 옵 니 다.
InsertAfter               지정 한 노드 를 지정 한 참조 노드 에 바로 삽입 한 후(XmlNode 에서 계승 합 니 다.)
InsertBefore 는 지정 한 노드 를 지정 한 참조 노드 에 바로 삽입 하기 전에(XmlNode 에서 계승 합 니 다.)
Load                  무 거 운 짐 을 실 었 습 니 다.Stream,URL,TextReader 또는 XmlReader 에서 지정 한 XML 데 이 터 를 불 러 옵 니 다.
LoadXml                지정 한 문자열 에서 XML 문 서 를 불 러 옵 니 다.
Normalize 는 이 XmlNode 하위 트 리 의 완전 깊이 에 있 는 모든 XmlText 노드 를'정상'형식 으로 변환 합 니 다.이 형식 에 서 는 XmlText 노드(즉,태그,주석,처리 명령,CDATA 절 과 실체 참조)만 구분 합 니 다.즉,인접 한 XmlText 노드 가 없습니다.(XmlNode 에서 계승 합 니 다.)
PrependChild 는 지정 한 노드 를 이 노드 의 하위 노드 목록 의 시작 에 추가 합 니 다.(XmlNode 에서 계승 합 니 다.)
ReadNode               XmlReader 의 정보 에 따라 XmlNode 대상 을 만 듭 니 다.판독 기 는 노드 나 속성 에 위치 해 야 합 니 다.
RemoveAll               현재 노드 의 모든 하위 노드 와/또는 속성 을 제거 합 니 다.(XmlNode 에서 계승 합 니 다.)
RemoveChild 지정 한 하위 노드 를 제거 합 니 다.(XmlNode 에서 계승 합 니 다.)
ReplaceChild 는 new Child 노드 로 하위 노드 oldChild 를 교체 합 니 다.(XmlNode 에서 계승 합 니 다.)
Save 가 다시 불 러 왔 습 니 다.XML 문 서 를 지정 한 위치 에 저장 합 니 다.
SelectNodes              무 거 운 짐 을 실 었 습 니 다.
SelectSingleNode 가 다시 불 러 왔 습 니 다.
Supports 는 DOM 이 특정한 기능 을 실현 하 는 지 테스트 합 니 다.(XmlNode 에서 계승 합 니 다.)
Validate 가 다시 실 렸 습 니 다.XmlDocument 가 Schemas 속성 에 포 함 된 XML 구조 정의 언어(XSD)구조 인지 검증 합 니 다.
Write ContentTo 는 XmlDocument 노드 의 모든 하위 단 계 를 지정 한 XmlWriter 에 저장 합 니 다.(XmlNode 를 다시 씁 니 다.:.Write ContentTo(XmlWriter).
WriteTo 는 XmlDocument 노드 를 지정 한 XmlWriter 에 저장 합 니 다.(XmlNode 를 다시 씁 니 다.:.WriteTo(XmlWriter).
 사건
NodeChanged 는 이 문서 의 노드 에 속 하 는 Value 가 변경 되 었 을 때 발생 합 니 다.
NodeChanging 은 이 문서 의 노드 에 속 하 는 Value 가 변 경 될 때 발생 합 니 다.
NodeInserted         이 문서 에 속 하 는 노드 가 다른 노드 에 삽입 되 었 을 때 발생 합 니 다.
NodeInserting 은 이 문서 에 속 하 는 노드 가 다른 노드 에 삽 입 될 때 발생 합 니 다.
NodeRemoved 는 이 문서 에 속 하 는 노드 가 부모 에서 제거 되 었 을 때 발생 합 니 다.
NodeRemoving 이 문서 에 속 하 는 노드 가 문서 에서 제 거 될 때 발생 합 니 다.
보조 속성:
Previous Sibling 이전 형제 노드
다음 형제 노드
First Child 첫 번 째 키 노드
LastChild 마지막 키 노드
ChildNodes 서브 노드 집합
ParentNode     부모 노드
코드 예제:
xml 문서:

<?xml version="1.0" encoding="utf-8" ?>
<Article>
  <author age="30"> </author>
  <length>12000</length>
  <price>42</price>
</Article>
코드:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");
            // Article ,
            XmlAttributeCollection xc = doc.SelectSingleNode("Article").FirstChild.Attributes;
            string age = xc[0].Value;   // , //string age = xc["age"].Value;
            Console.WriteLine(age);     // 30

            string baseuri = doc.SelectSingleNode("Article").FirstChild.BaseURI;   
            Console.WriteLine(baseuri);     // file:///C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml

            XmlNodeList listNode = doc.SelectSingleNode("Article").ChildNodes;  // Article
            for (int i = 0; i < listNode.Count;i++ )    //XmlNodeList foreach , for
            {
                Console.Write(listNode[i].Name + " : " + listNode[i].InnerText);    // author: length:12000 price:30    Name ,
            }

            XmlElement xe = doc.DocumentElement;    //
            Console.WriteLine(xe.Name);     // Article   

            //XmlDocumentType xdt = doc.DocumentType;     // DOCTYPE 。 DTD 。
            //Console.Write(xdt.Name);  // , DOCTYPE

            Console.WriteLine(doc.HasChildNodes);    // True Document 。

            //XmlImplementation xi = doc.Implementation;    //
            //xi.ToString();   


            Console.WriteLine(doc.InnerText);   // 12000 30
            Console.WriteLine(doc.InnerXml);    // Xml
            Console.WriteLine(doc.IsReadOnly);  // 。 False
            XmlNode node = doc.LastChild;
            Console.WriteLine(node.InnerText);  // 12000 30    Article , Article
            Console.WriteLine(doc.LocalName);   // #document
            Console.WriteLine(doc.SelectSingleNode("Article").Name);    // Article
            Console.WriteLine(doc.SelectSingleNode("Article").FirstChild.NextSibling.Name);     //length author length
            XmlNodeType xnt = doc.SelectSingleNode("Article").NodeType;
            Console.WriteLine(xnt);  // Element,
            string str = doc.SelectSingleNode("Article").OuterXml;  // , Article <Article> ...</Article>
            Console.WriteLine(str);
            XmlDocument x = new XmlDocument();
            x.LoadXml(str);

            Console.WriteLine(doc.SelectSingleNode("Article").OwnerDocument);   // XmlDocument
            XmlNode xn = doc.SelectSingleNode("Article").LastChild.ParentNode;  //ParentNode 。
            Console.WriteLine(xn.Name); // Article

            Console.WriteLine(doc.PreserveWhitespace);  //     False
            XmlNode xn1 = doc.SelectSingleNode("Article").LastChild.PreviousSibling;
            Console.WriteLine(xn1.Name);    // length 。

            Console.ReadKey();
        }

 속성 을 더 잘 보 여주 기 위해 xml 을 이렇게 바 꿉 니 다.

<?xml version="1.0" encoding="utf-8" ?>
<h:Article xmlns:h = "http://www.xxx.com/">
  <!-- -->
  <h:author age="30"> </h:author>
  <h:length>12000</h:length>
  <h:price>42</h:price>
</h:Article>
코드 는 다음 과 같 습 니 다:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");
            XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
            xnm.AddNamespace("h", "http://www.xxx.com/");
            XmlNode Article = doc.SelectSingleNode("h:Article", xnm);
            string namespace1 = Article.InnerText;
            Console.WriteLine(namespace1);      // 12000 30

            Console.WriteLine(Article.Prefix);  // h 
            Console.WriteLine(Article.NamespaceURI);    // http://www.xxx.com/123 

            Console.WriteLine(Article.FirstChild.Name + "---" + Article.FirstChild.Value + "---" + Article.FirstChild.LocalName);
            // h:author------author

             //SchemaInfo (PSVI)。//Value 。 ( XmlNode。)
             //XmlResolver XmlResolver 。 

            Console.ReadKey();
        }

 Schemas 라 는 속성 을 하나 더 보 여 드릴 게 요.

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();    //
            doc.Schemas.Add(null, @"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xsd");    // XmlDocument
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xml");     // xml
            Console.WriteLine(doc.Schemas.Count);   // 1
            Console.WriteLine(doc.SchemaInfo.MemberType);
            //XmlResolver XmlResolver 。 

            Console.ReadKey();
        }

다음은 XmlDocument 의 방법 을 시험 해 보 겠 습 니 다.
Test.xml 코드 는 다음 과 같 습 니 다.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book>
    <id>1</id>
    <title lang=" 1"> </title>
    <author> </author>
    <year>2005</year>
    <price id='a1"'>38.5</price>
  </book>
  <book>
    <id>2</id>
    <title lang=" 2"> </title>
    <author> </author>
    <year>2004</year>
    <price>37.5</price>
  </book>
</bookstore>
주 프로그램 코드 는 다음 과 같 습 니 다.

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();    //
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");     // xml

            XmlNode node1 = doc.CreateNode(XmlNodeType.Element, "pagecount", null);
            node1.InnerText = "222";
            doc.SelectSingleNode("/bookstore").AppendChild(node1); // <pagecount>222</pagecount> </bookstore>
            doc.Save(@"D:\123.xml");

            XmlNode node2 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").Clone();    //
            Console.WriteLine(node2.InnerText);     //

            XmlNode node3 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").CloneNode(true);   // ( false, )
            Console.WriteLine(node3.InnerText);     //

            XmlAttribute attr = doc.CreateAttribute("age");     // age
            attr.Value = "23";
            doc.SelectSingleNode("/bookstore/book[1]/author[1]").Attributes.Append(attr);   // <author age="23"> </author>
            doc.Save(@"D:\123.xml");

            XmlCDataSection cdata = doc.CreateCDataSection(" & ");
            doc.SelectSingleNode("/bookstore/book[1]/author[1]").AppendChild(cdata);        // author <author age="23"> <![CDATA[ & ]]></author>
            doc.Save(@"D:\123.xml");

            XmlComment com = doc.CreateComment("2013-2-27 22:37:25");
            doc.SelectSingleNode("/bookstore/book[1]/title[1]").AppendChild(com);   // title <title lang=" 1"> <!--2013-2-27 22:37:25--></title>
            doc.Save(@"D:\123.xml");

            XmlDocument doc1 = new XmlDocument();
            XmlDocumentFragment xdf = doc1.CreateDocumentFragment();    // xml ,
            xdf.InnerXml = "<item>widget</item>";
            doc1.AppendChild(xdf);
            Console.WriteLine(doc1.OuterXml);   // <item>widget</item>

            //CreateDefaultAttribute         、 URI 。
            //CreateDocumentType          XmlDocumentType 。

            XmlDocument doc2 = new XmlDocument();
            XmlElement element = doc2.CreateElement("title");   // title <title/>
            doc2.AppendChild(element);
            XmlEntityReference xer = doc2.CreateEntityReference("h");
            doc2.LastChild.AppendChild(xer);
            Console.WriteLine(doc2.OuterXml);   // </title>&h;</title>

            XPathNavigator nav = doc2.CreateNavigator();    // XML

            XmlText text = doc2.CreateTextNode(" ");  //
            doc2.SelectSingleNode("/title").AppendChild(text);
            Console.WriteLine(doc2.OuterXml);   // </title>&h; </title>

            XmlWhitespace xws = doc2.CreateWhitespace("     ");     //
            doc2.SelectSingleNode("/title").AppendChild(xws);
            Console.WriteLine(doc2.OuterXml);   // </title>&h;      </title>

            XmlDeclaration xd = doc2.CreateXmlDeclaration("1.0", "utf-8", "yes");  //xml   XML
            XmlNode root = doc2.SelectSingleNode("/title");
            doc2.InsertBefore(xd, root);
            Console.WriteLine(doc2.OuterXml);   // <?xml version="1.0" encoding="utf-8" standalont="yes"?>

            XmlSignificantWhitespace xsw = doc2.CreateSignificantWhitespace("      ");
            XmlElement ele = doc2.CreateElement("white");
            ele.InnerText = " ";
            ele.AppendChild(xsw);
            doc2.SelectSingleNode("/title").AppendChild(ele);
            Console.WriteLine(doc2.OuterXml);       // , CreateWhitespace

            XmlDocument doc3 = new XmlDocument();
            String PItext = "type='text/xsl' href='book.xsl'";
            XmlProcessingInstruction newPI = doc3.CreateProcessingInstruction("xml-stylesheet", PItext);
            doc3.AppendChild(newPI);
            Console.WriteLine(doc3.OuterXml);   // <?xml-stylesheet type="text/xsl" hred="book.xsl"?>
            //GetElementById            ID XmlElement。
            //GetElementsByTagName        。 XmlNodeList, 。
            //GetEnumerator            XmlNode “for each” 。 ( XmlNode。)
            //GetNamespaceOfPrefix         xmlns , URI。 ( XmlNode。)
            //GetPrefixOfNamespace         URI xmlns , 。 ( XmlNode。)
            //ImportNode              。
            //InsertAfter               。 ( XmlNode。)
            //InsertBefore              。 ( XmlNode。)

            //LoadXml                XML 。
            //Normalize               XmlNode XmlText “ ” , ( 、 、 、                    CDATA ) XmlText , , XmlText 。 ( XmlNode。)
            //PrependChild             。 ( XmlNode。)
            //ReadNode               XmlReader XmlNode 。 。
            //RemoveAll               / 。 ( XmlNode。)
            //RemoveChild             。 ( XmlNode。)
            //ReplaceChild             newChild oldChild。 ( XmlNode。)


            //Supports               DOM 。 ( XmlNode。)
            //Validate                。 XmlDocument Schemas XML (XSD) 。
            //WriteContentTo            XmlDocument XmlWriter 。 ( XmlNode..::.WriteContentTo(XmlWriter)。)
            //WriteTo               XmlDocument XmlWriter。 ( XmlNode..::.WriteTo(XmlWriter)。)
            Console.ReadKey();
        }

좋은 웹페이지 즐겨찾기