Heim Backend-Entwicklung C#.Net-Tutorial Detaillierte Code-Erklärung der drei Implementierungsmethoden von C# zum Lesen von XML

Detaillierte Code-Erklärung der drei Implementierungsmethoden von C# zum Lesen von XML

Mar 06, 2017 am 11:14 AM

XML-Datei ist ein häufig verwendetes Dateiformat. In diesem Artikel werden hauptsächlich drei Implementierungsmethoden für C# zum Lesen von XML vorgestellt, hauptsächlich XmlDocument, XmlTextReader und Linq to Xml.

Vorwort

XML-Dateien sind ein häufig verwendetes Dateiformat, z. B. app.config in WinForm und web.config in Webprogrammen gefunden in Dokumenten und an vielen wichtigen Orten. (Ähnlich wie Json) Microsoft stellt auch eine Reihe von Klassenbibliotheken zur Verfügung, die uns beim Speichern von XML-Dateien in Anwendungen helfen

Es gibt im Allgemeinen zwei Modelle für den Zugriff auf und die Bedienung von XML-Dateien in Programmen:

DOM (Document Object Model):Die Vorteile der Verwendung von DOM bestehen darin, dass es die Bearbeitung und Aktualisierung von XML-Dokumenten, den wahlfreien Zugriff auf Daten im Dokument und die Möglichkeit zur Abfrage mit XPath ermöglicht , aber Der Nachteil von DOM besteht darin, dass das gesamte Dokument auf einmal in den Speicher geladen werden muss, was bei großen Dokumenten zu Ressourcenproblemen führen kann.

Stream-Modell: Das Stream-Modell löst dieses Problem sehr gut, da es das Konzept des Streams verwendet, um auf XML-Dateien zuzugreifen, dh nur auf den aktuellen Knoten, aber auch auf ihn Seine Mängel sind, dass es schreibgeschützt und nur vorwärts ist und keine Rückwärtsnavigation im Dokument ausführen kann.

Die drei Methoden zum Lesen von XML-Dateien in C# sind wie folgt:

1. Verwenden Sie XmlDocument (DOM-Modus)

2 .Verwenden Sie XmlTextReader (Stream-Modus)

3. Verwenden Sie Linq to XML (Linq-Modus)

Verwenden Sie den XmlDocument-Modus zum Lesen

Die Verwendung von XmlDocument ist eine Möglichkeit, XML-Dateien basierend auf dem Dokumentstrukturmodell zu lesen. In einer XML-Datei können wir uns XML als bestehend aus einer Dokumentdeklaration (Declare), einem Element (Element) und vorstellen ein Attribut (Attribut), ein aus Text (Text) usw. bestehender Baum. Der erste Knoten wird als Wurzelknoten bezeichnet, und jeder Knoten kann seine eigenen untergeordneten Knoten haben. Nach dem Abrufen eines Knotens kann dieser über eine Reihe von Attributen abgerufen werden oder Methoden Der Wert dieses Knotens oder einiger anderer Attribute. Zum Beispiel:

xn 代表一个结点
xn.Name;//这个结点的名称
xn.Value;//这个结点的值
xn.ChildNodes;//这个结点的所有子结点
xn.ParentNode;//这个结点的父结点
Nach dem Login kopieren

Alle Daten lesen

Deklarieren Sie bei der Verwendung zunächst ein XmlDocument-Objekt und rufen Sie dann die Load-Methode auf, um die XML-Datei aus dem angegebenen Pfad zu laden

BookModel ist ein Buchmodell

#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读取
Nach dem Login kopieren

Die laufenden Ergebnisse sind wie folgt:

Verwenden Sie XmlTextReader zum Lesen

Wenn Sie XmlTextReader zum Lesen von Daten verwenden, erstellen Sie zunächst einen Stream, verwenden Sie dann die Methode read (), um kontinuierlich nach unten zu lesen, und führen Sie entsprechende Vorgänge entsprechend der Art des gelesenen Knotens aus folgt:

#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
Nach dem Login kopieren

Verwenden Sie Linq to XML, um

zu lesen Linq ist eine neue Funktion in C# 3.0, mit der Sie viele Datenquellen, einschließlich XML-Dateien, problemlos bedienen können. Die Verwendung von Linq zum Betrieb von XML-Dateien ist sehr praktisch und relativ einfach.

muss mit System.Linq referenziert werden;mit 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 读取所有的数据
Nach dem Login kopieren

Zusammenfassung

1. Der Vorteil der XmlDocument-Methode besteht darin, dass sie leicht zu finden ist.

2. Die XmlTextReader-Methode ist eine Stream-Lesemethode, die verwendet wird weniger Speicher

3. Die neueste Methode von Linq to cn)!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

C#-Serialisierung C#-Serialisierung Sep 03, 2024 pm 03:30 PM

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Primzahlen in C# Primzahlen in C# Sep 03, 2024 pm 03:35 PM

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Fakultät in C# Fakultät in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

See all articles