백엔드 개발 C#.Net 튜토리얼 C#에서 XML을 읽는 세 가지 구현 방법에 대한 자세한 코드 설명

C#에서 XML을 읽는 세 가지 구현 방법에 대한 자세한 코드 설명

Mar 06, 2017 am 11:14 AM

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)를 참고하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

C#을 사용한 Active Directory C#을 사용한 Active Directory Sep 03, 2024 pm 03:33 PM

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

C#의 난수 생성기 C#의 난수 생성기 Sep 03, 2024 pm 03:34 PM

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

C# 데이터 그리드 보기 C# 데이터 그리드 보기 Sep 03, 2024 pm 03:32 PM

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

C# 직렬화 C# 직렬화 Sep 03, 2024 pm 03:30 PM

C# 직렬화 가이드. 여기에서는 C# 직렬화 개체의 소개, 단계, 작업 및 예제를 각각 논의합니다.

PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? PHP에서 HTML/XML을 어떻게 구문 분석하고 처리합니까? Feb 07, 2025 am 11:57 AM

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

C#의 소수 C#의 소수 Sep 03, 2024 pm 03:35 PM

C#의 소수 가이드. 여기서는 코드 구현과 함께 C#의 소수에 대한 소개와 예를 논의합니다.

C#의 패턴 C#의 패턴 Sep 03, 2024 pm 03:33 PM

C#의 패턴 가이드. 여기에서는 예제 및 코드 구현과 함께 C#의 패턴 소개 및 상위 3가지 유형에 대해 설명합니다.

C#의 팩토리얼 C#의 팩토리얼 Sep 03, 2024 pm 03:34 PM

C#의 팩토리얼 가이드입니다. 여기서는 다양한 예제 및 코드 구현과 함께 C#의 계승에 대한 소개를 논의합니다.

See all articles