Maison > développement back-end > Tutoriel C#.Net > Explication détaillée du code de trois méthodes d'implémentation de la lecture XML en C#

Explication détaillée du code de trois méthodes d'implémentation de la lecture XML en C#

黄舟
Libérer: 2017-03-06 11:14:04
original
2602 Les gens l'ont consulté

Le fichier XML est un format de fichier couramment utilisé. Cet article présente principalement trois méthodes d'implémentation permettant à C# de lire XML, principalement XmlDocument, XmlTextReader et Linq to Xml. Ceux qui sont intéressés peuvent en savoir plus.

Avant-propos

Le fichier XML est un format de fichier couramment utilisé, tel que app.config dans WinForm et web.config dans les programmes Web. trouvé dans des documents et dans de nombreux endroits importants. (Similaire à Json) Microsoft fournit également une série de bibliothèques de classes pour nous aider à stocker des fichiers XML dans des applications

Il existe généralement deux modèles pour accéder et utiliser des fichiers XML dans des programmes :

DOM (Document Object Model) :Les avantages de l'utilisation de DOM sont qu'il permet l'édition et la mise à jour de documents XML, un accès aléatoire aux données du document et la possibilité d'effectuer des requêtes à l'aide de XPath. , mais l'inconvénient du DOM est qu'il doit charger l'intégralité du document en mémoire en une seule fois, ce qui peut entraîner des problèmes de ressources pour les documents volumineux.

Modèle Stream : Le modèle stream résout très bien ce problème, car il utilise la notion de stream pour accéder aux fichiers XML, c'est-à-dire uniquement au nœud courant, mais il a aussi Ses inconvénients sont qu'il est en lecture seule, en avant uniquement et ne peut pas effectuer d'opérations de navigation vers l'arrière dans le document.

Les trois méthodes de lecture des fichiers XML en C# sont les suivantes :

1 Utiliser XmlDocument (mode DOM)

2 .Utilisez XmlTextReader (mode flux)


3. Utilisez Linq to Xml (mode Linq)

Utilisez le mode XmlDocument pour lire

L'utilisation de XmlDocument est un moyen de lire des fichiers XML basé sur le modèle de structure de document. Dans un fichier XML, nous pouvons considérer XML comme constitué d'une déclaration de document (Declare), d'un élément (Element) et. un attribut (Attribute), un arbre composé de texte (Texte), etc. Le premier nœud est appelé nœud racine, et chaque nœud peut avoir ses propres nœuds enfants. Après avoir obtenu un nœud, il peut être obtenu via une série d'attributs. ou méthodes La valeur de ce nœud ou d'autres attributs :


xn 代表一个结点
xn.Name;//这个结点的名称
xn.Value;//这个结点的值
xn.ChildNodes;//这个结点的所有子结点
xn.ParentNode;//这个结点的父结点
Copier après la connexion

Lire toutes les données

Lors de son utilisation, déclarez d'abord un objet XmlDocument, puis appelez la méthode Load pour charger le fichier XML à partir du chemin spécifié


BookModel est un modèle de livre


.

#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读取
Copier après la connexion

Les résultats d'exécution sont les suivants :

Utilisez XmlTextReader pour lire

Lorsque vous utilisez XmlTextReader pour lire des données, créez d'abord un flux, puis utilisez la méthode read() pour lire en continu vers le bas et effectuez les opérations correspondantes en fonction du type de nœud lu As. suit :


#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
Copier après la connexion

Utilisez Linq to Xml pour lire

Linq est C# 3.0 Une nouvelle fonctionnalité apparue dans , vous pouvez l'utiliser pour exploiter facilement de nombreuses sources de données, y compris les fichiers XML. L'utilisation de Linq pour exploiter des fichiers XML est très pratique et relativement simple.


doit faire référence à l'aide de System.Linq; à l'aide de 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 读取所有的数据
Copier après la connexion

Résumé

1. L'avantage de la méthode XmlDocument est qu'elle est facile à trouver

2 La méthode XmlTextReader est une méthode de lecture de flux qui utilise. moins de mémoire

3. La dernière méthode de Linq to cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal