Maison  >  Article  >  développement back-end  >  Introduction détaillée à l'exemple de code d'utilisation de XmlReader pour lire des fichiers XML

Introduction détaillée à l'exemple de code d'utilisation de XmlReader pour lire des fichiers XML

黄舟
黄舟original
2017-03-21 16:59:102090parcourir

Dans le développement .net, il est souvent nécessaire de lire et d'écrire des fichiers sous forme de xml (app.config et web.config sont des colonnes spéciales de fichiers xml utilisées respectivement dans WinForm et WebForm, et Microsoft fournit La méthode générale ne sera pas décrite ici). La bibliothèque de classes .net fournit diverses façons de lire et d'écrire des fichiers XML. Chaque méthode a ses avantages et ses inconvénients, elle a donc son caractère pratique.

Ce qui suit est une liste des classes de fichiers XML de lecture et d'écriture et de leurs caractéristiques fournies par la bibliothèque de classes Microsoft.net :

tbody>
Nom de la classe

类名称

优点

缺点

XmlReader

快速、高效、可扩展

只读,只向前,需要人工验证

XmlDocument

可往返、可读写、支持XPath筛选

比XmlReader慢

XPathNavigator

可往返,支持XPath和XSLT

只读

XPathDocument

比XmlDocument,优化支持XPath和XSLT

比XmlReader慢

Avantages

Inconvénients

XmlReader
<?xml version="1.0" encoding="utf-8" ?>
<Menus>
  <Menu title="常用网址">
    <item name="天下网" url="http://www.netskycn.com" id="1"/>
    <item name="天下网生活论坛" url="http://l
if
e.netskycn.com" id="2"/>
    <item name="csdn" url="http://www.csdn.net" id="3"/>
    <item name="我的博客" url="http://blog.csdn.net/zhoufoxcn" id="4"/>
    <item name="百度" url="http://www.baidu.com" id="5"/>
    <item name="Google" url="http://www.google.cn" id="6"/>
    <item name="微软" url="http://www.microsoft.com" id="7"/>
  </Menu>
  <Menu title="娱乐网址">
    <item name="奇虎" url="http://www.qihoo.com" id="12"/>
    <item name="网易" url="http://www.163.com" id="13"/>
    <item name="天涯" url="http://www.tianya.cn" id="14"/>
  </Menu>
  <Menu title="
安全
网址">
    <item name="360" url="http://www.safe360.com" id="15"/>
    <item name="瑞星" url="http://www.rising.com.cn" id="16"/>  
  </Menu>
</Menus>

Rapide, efficace, évolutif

<?xml version="1.0" encoding="utf-8" ?>
<Menus>
  <Menu title="常用网址">
    <item name="天下网" url="http://www.netskycn.com" id="1"/>
    <item name="天下网生活论坛" url="http://life.netskycn.com" id="2"/>
    <item name="csdn" url="http://www.csdn.net" id="3"/>
    <item name="我的博客" url="http://blog.csdn.net/zhoufoxcn" id="4"/>
    <item name="百度" url="http://www.baidu.com" id="5"/>
    <item name="Google" url="http://www.google.cn" id="6"/>
    <item name="微软" url="http://www.microsoft.com" id="7"/>
  </Menu>
  <Menu title="娱乐网址">
    <item name="奇虎" url="http://www.qihoo.com" id="12"/>
    <item name="网易" url="http://www.163.com" id="13"/>
    <item name="天涯" url="http://www.tianya.cn" id="14"/>
  </Menu>
  <Menu title="安全网址">
    <item name="360" url="http://www.safe360.com" id="15"/>
    <item name="瑞星" url="http://www.rising.com.cn" id="16"/>  
  </Menu>
</Menus>

(二)读取并显示:ReadXml.aspx

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Xml" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>XMLReader实例</title>
</head>
<body>
<script runat="server">


protected void Page_Load(Object Src, EventArgs E)
{
  if (!IsPostBack) 
  {
      XmlReader xmlReader = XmlReader.Create(Server.MapPath("Menu.xml"));
            while (xmlReader.Read())
            {
                Response.Write("<li>节点类型:" + xmlReader.NodeType + "==<br>");
                switch (xmlReader.NodeType)
                {
                    case XmlNodeType.XmlDeclaration:
                        for (int i = 0; i < xmlReader.AttributeCount; i++)
                        {
                            xmlReader.MoveToAttribute(i);
                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+" ");
                        }
                        break;
                    case XmlNodeType.Attribute:
                        for (int i = 0; i < xmlReader.AttributeCount; i++)
                        {
                            xmlReader.MoveToAttribute(i);
                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+" ");
                        }
                        break;
                    case XmlNodeType.CDATA:
                        Response.Write("CDATA:" + xmlReader.Value+" ");
                        break;
                    case XmlNodeType.Element:
                        Response.Write("节点名称:" + xmlReader.LocalName+"<br>");
                        for (int i = 0; i < xmlReader.AttributeCount; i++)
                        {
                            xmlReader.MoveToAttribute(i);
                            Response.Write("属性:" + xmlReader.Name + "=" + xmlReader.Value+" ");
                        }
                        break;
                    case XmlNodeType.Comment:
                        Response.Write("Comment:" + xmlReader.Value);
                        break;
                    case XmlNodeType.Whitespace:
                        Response.Write("Whitespace:" + " ");
                        break;
                    case XmlNodeType.ProcessingInstruction:
                        Response.Write("ProcessingInstruction:" + xmlReader.Value);
                        break;
                    case XmlNodeType.Text:
                        Response.Write("Text:" + xmlReader.Value);
                        break;
                }
            }
            xmlReader.Close();
  }
}
</script>
</body>
</html>
Lecture seule, transfert uniquement, nécessite une vérification manuelle

XmlDocument

Aller-retour, lisible et inscriptible, prend en charge XPath
节点类型:XmlDeclaration==属性:version=1.0 属性:encoding=utf-8 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:Menus
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:Menu属性:title=常用网址 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=天下网 属性:url=http://www.netskycn.com 属性:id=1 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=天下网生活论坛 属性:url=http://life.netskycn.com 属性:id=2 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=csdn 属性:url=http://www.csdn.net 属性:id=3 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=我的博客 属性:url=http://blog.csdn.net/zhoufoxcn 属性:id=4 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=百度 属性:url=http://www.baidu.com 属性:id=5 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=Google 属性:url=http://www.google.cn 属性:id=6 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=微软 属性:url=http://www.microsoft.com 属性:id=7 
节点类型:Whitespace==Whitespace: 
节点类型:EndElement==
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:Menu属性:title=娱乐网址 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=奇虎 属性:url=http://www.qihoo.com 属性:id=12 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=网易 属性:url=http://www.163.com 属性:id=13 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=天涯 属性:url=http://www.tianya.cn 属性:id=14 
节点类型:Whitespace==Whitespace: 
节点类型:EndElement==
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:Menu属性:title=安全网址 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=360 属性:url=http://www.safe360.com 属性:id=15 
节点类型:Whitespace==Whitespace: 
节点类型:Element==节点名称:item属性:name=瑞星 属性:url=http://www.rising.com.cn 属性:id=16 
节点类型:Whitespace==Whitespace: 
节点类型:EndElement==
节点类型:Whitespace==Whitespace: 
节点类型:EndElement==
Filtrage

    Plus lent que XmlReader
    XPathNavigator Peut aller-retour, prend en charge XPath et XSLT Lecture seule
    XPathDocument Comparé à XmlDocument, optimisé pour prendre en charge XPath et XSLT Plus lent que XmlReader
    Le XmlReader mentionné dans cet article est également une classe de la bibliothèque de classes Microsoft. Il se caractérise par sa rapidité, son efficacité et son évolutivité. en lecture seule. Les exemples suivants illustrent l'utilisation de XmlReader : (1) fichier xml utilisé : meu.xml (2) Lecture et affichage : ReadXml.aspx Remarque particulière : les fichiers menu.xml et ReadXml.aspx sont placés dans le même dossier. Si la situation réelle n'est pas cohérente avec cela, veuillez le modifier en fonction de la situation réelle. Voici le résultat :

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    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