C#에서 XML을 읽는 세 가지 구현 방법에 대한 자세한 코드 설명
XML 파일은 일반적으로 사용되는 파일 형식입니다. 이 기사에서는 주로 C#에서 XML을 읽는 세 가지 구현 방법, 주로 XmlDocument, XmlTextReader 및 Linq to Xml을 소개합니다.
서문
XML 파일은 WinForm의 app.config, 웹 프로그램의 web.config 등 일반적으로 사용되는 파일 형식입니다. 문서와 많은 중요한 장소에서 발견됩니다. (Json과 유사) Microsoft는 또한 애플리케이션에 XML 파일을 저장하는 데 도움이 되는 일련의 클래스 라이브러리를 제공합니다.
프로그램에서 XML 파일에 액세스하고 작동하는 데에는 일반적으로 두 가지 모델이 있습니다.
DOM(문서 객체 모델):DOM 사용의 이점은 XML 문서 편집 및 업데이트, 문서 내 데이터에 대한 무작위 액세스, XPath를 사용한 쿼리 기능 등이 있다는 것입니다. , 그러나 DOM의 단점은 전체 문서를 한 번에 메모리에 로드해야 한다는 점이며, 이로 인해 대용량 문서의 경우 리소스 문제가 발생할 수 있습니다.
스트림 모델: 스트림 모델은 스트림 개념을 사용하여 XML 파일, 즉 현재 노드에만 액세스하기 때문에 이 문제를 매우 잘 해결합니다. 단점은 읽기 전용, 앞으로만 가능하며 문서에서 뒤로 탐색 작업을 수행할 수 없다는 것입니다.
C#에서 XML 파일을 읽는 세 가지 방법은 다음과 같습니다.
1. XmlDocument(DOM 모드)를 사용합니다.
2 .XmlTextReader 사용(스트림 모드)
3. Linq를 Xml에 사용(Linq 모드)
XmlDocument 모드를 사용하여 읽기
XmlDocument를 사용하는 것은 문서 구조 모델을 기반으로 XML 파일을 읽는 방법입니다. XML 파일에서는 XML을 문서 선언(Declare), 요소(Element), 속성(Attribute), 텍스트(Text) 등으로 구성된 트리. 첫 번째 노드를 루트 노드라고 하며, 각 노드는 노드를 얻은 후 일련의 속성을 통해 얻을 수 있습니다. 또는 메소드 이 노드 또는 기타 속성의 값 예:
xn 代表一个结点 xn.Name;//这个结点的名称 xn.Value;//这个结点的值 xn.ChildNodes;//这个结点的所有子结点 xn.ParentNode;//这个结点的父结点
모든 데이터 읽기
사용할 때는 먼저 XmlDocument 개체를 선언한 다음 Load 메서드를 호출하여 지정된 경로에서 XML 파일을 로드합니다.
BookModel은 책 모델입니다
#region XmlDocument读取 public static void XmlDocumentReadDemo() { //list List<BookModel> bookModeList = new List<BookModel>(); //使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件. XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 using (XmlReader reader = XmlReader.Create(@"d:/demo.xml", settings)) { doc.Load(reader); //doc.Load(@"d:/demo.xml"); //然后可以通过调用SelectSingleNode得到指定的结点,通过GetAttribute得到具体的属性值.参看下面的代码 // 得到根节点bookstore XmlNode xn = doc.SelectSingleNode("bookstore"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xn1 in xnl) { BookModel bookModel = new BookModel(); // 将节点转换为元素,便于得到节点的属性值 XmlElement xe = (XmlElement)xn1; // 得到Type和ISBN两个属性的属性值 bookModel.BookISBN = xe.GetAttribute("ISBN").ToString(); bookModel.BookType = xe.GetAttribute("Type").ToString(); // 得到Book节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; bookModel.BookName = xnl0.Item(0).InnerText; bookModel.BookAuthor = xnl0.Item(1).InnerText; bookModel.BookPrice = Convert.ToDouble(xnl0.Item(2).InnerText); bookModeList.Add(bookModel); } } bookModeList.Add(new BookModel()); } #endregion XmlDocument读取
실행 결과는 다음과 같습니다.
읽으려면 XmlTextReader를 사용하세요
XmlTextReader를 사용하여 데이터를 읽을 때는 먼저 스트림을 생성한 후 read() 메서드를 사용하여 아래쪽으로 연속적으로 읽으며, 읽은 노드 유형에 따라 해당 작업을 수행합니다.
#region XmlTextReaderDemo public static void XmlTextReaderDemo() { XmlTextReader reader = new XmlTextReader(@"d:/demo.xml"); List<BookModel> modelList = new List<BookModel>(); BookModel model = new BookModel(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "book") { model.BookType = reader.GetAttribute("Type"); model.BookISBN = reader.GetAttribute("ISBN"); } if (reader.Name == "title") { model.BookName = reader.ReadElementContentAsString(); } if (reader.Name == "author") { model.BookAuthor = reader.ReadElementString().Trim(); } if (reader.Name == "price") { model.BookPrice = Convert.ToDouble(reader.ReadElementString().Trim()); } //for(int i=0;i<reader.AttributeCount;i++) //{ // reader.MoveToAttribute(i); //} } if (reader.NodeType == XmlNodeType.EndElement) { modelList.Add(model); model = new BookModel(); } } reader.Close(); modelList.Add(new BookModel()); } #endregion XmlTextReaderDemo
Linq를 Xml로 사용하여 읽기
Linq는 다음과 같은 새로운 기능입니다. C# 3.0에 등장하면서 XML 파일을 포함한 많은 데이터 소스를 편리하게 조작하는 데 사용할 수 있습니다. Linq를 사용하여 XML 파일을 조작하는 것은 매우 편리하고 비교적 간단합니다.
System.Linq를 사용하여 참조해야 함;using System.Xml.Linq;
#region 读取所有的数据 XElement xe = XElement.Load(@"d:/demoLinq.xml"); //xe.Descendants var elements = from ele in xe.Elements() select ele; List<BookModel> modelList = new List<BookModel>(); foreach (var ele in elements) { BookModel model = new BookModel(); model.BookAuthor = ele.Element("author").Value; model.BookName = ele.Element("title").Value; model.BookPrice = Convert.ToDouble(ele.Element("price").Value); model.BookISBN = ele.Attribute("ISBN").Value; model.BookType = ele.Attribute("Type").Value; modelList.Add(model); } modelList.Add(new BookModel()); #endregion 读取所有的数据
요약
1. XmlDocument 방식의 장점은 찾기 쉽다는 점
2. Xml의 최신 방식도 추천 방식이다.
위는 C#에서 XML을 읽는 세 가지 구현 방법에 대한 자세한 코드 설명입니다. 자세한 내용은 PHP 중국어 사이트(www.php.cn)를 참고하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C#을 사용한 Active Directory 가이드. 여기에서는 소개와 구문 및 예제와 함께 C#에서 Active Directory가 작동하는 방식에 대해 설명합니다.

C#의 난수 생성기 가이드입니다. 여기서는 난수 생성기의 작동 방식, 의사 난수 및 보안 숫자의 개념에 대해 설명합니다.

C# 데이터 그리드 뷰 가이드. 여기서는 SQL 데이터베이스 또는 Excel 파일에서 데이터 그리드 보기를 로드하고 내보내는 방법에 대한 예를 설명합니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다
