`

XmlTextReader/XmlTextWriter读写XML文件

C# 
阅读更多

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;


namespace ConsoleApplication
{
    class XMLUtils
    {
        public string dbContection = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={HOST})(PORT={PORT})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={SERVICE_NAME})));User Id={UID};Password={PWD};";
        
        public const string INFO = "info";
        public const string DATABASE = "database";
        public const string CONTECTION = "contection";

        public const string SMTP = "smtp";
        public const string HOST = "host";
        public const string PORT = "port";
        public const string USERNAME = "username";
        public const string PASSWORD = "password";

        public const string MAIL = "mail";
        public const string FROM = "from";
        public const string TO = "to";

        public const string SENDMAIL = "sendmail";
        public const string SUBJECT1 = "subject1";
        public const string BODY1 = "body1";

        public const string DATAGENERATION = "datageneration";
        public const string SUBJECT2 = "subject2";
        public const string BODY2 = "body2";


        private string xmlPath;
        private Dictionary dict = null;

        public XMLUtils(string xmlPath)
        {
            this.xmlPath = xmlPath;

            if (File.Exists(xmlPath)){
                readXml(xmlPath);
            } else { 
                createXml(xmlPath);
            }
        }

        private void createXml(string xmlPath)
        {
            XmlTextWriter writer = new XmlTextWriter(xmlPath, System.Text.Encoding.UTF8);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 4;

            // 
            writer.WriteStartDocument(); 

            writer.WriteStartElement(INFO);

            writer.WriteStartElement(DATABASE);
            writer.WriteStartElement(CONTECTION);
            writer.WriteCData(dbContection);
            writer.WriteEndElement();
            writer.WriteEndElement();

            writer.WriteStartElement(SMTP); 
            writer.WriteElementString(HOST, "SMTP HOST");
            writer.WriteElementString(PORT, "SMTP PORT");
            writer.WriteElementString(USERNAME, "SMTP USERNAME");
            writer.WriteElementString(PASSWORD, "SMTP PASSWORD");
            writer.WriteEndElement();

            writer.WriteStartElement(MAIL); 
            writer.WriteElementString(FROM, "FROM");
            writer.WriteElementString(TO, "TO");

            writer.WriteStartElement(SENDMAIL); 
            writer.WriteElementString(SUBJECT1, "SUBJECT1");
            writer.WriteStartElement(BODY1);
            writer.WriteCData("BODY1");
            writer.WriteEndElement();
            writer.WriteEndElement();

            writer.WriteStartElement(DATAGENERATION);
            writer.WriteElementString(SUBJECT2, "SUBJECT2");
            writer.WriteStartElement(BODY2);
            writer.WriteCData("BODY2");
            writer.WriteEndElement();
            writer.WriteEndElement(); 

            writer.WriteEndElement(); 

            writer.WriteEndElement();

            writer.Close(); 
        }

        private void readXml(string xmlPath)
        {
            dict = new Dictionary();

            XmlTextReader reader = new XmlTextReader(new StreamReader(xmlPath, System.Text.Encoding.UTF8));
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    if (reader.LocalName == CONTECTION)
                    {
                        dict.Add(CONTECTION, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == HOST)
                    {
                        dict.Add(HOST, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == PORT)
                    {
                        dict.Add(PORT, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == USERNAME)
                    {
                        dict.Add(USERNAME, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == PASSWORD)
                    {
                        dict.Add(PASSWORD, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == FROM)
                    {
                        dict.Add(FROM, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == TO)
                    {
                        dict.Add(TO, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == SUBJECT1)
                    {
                        dict.Add(SUBJECT1, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == BODY1)
                    {
                        dict.Add(BODY1, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == SUBJECT2)
                    {
                        dict.Add(SUBJECT2, reader.ReadString().Trim());
                    }
                    if (reader.LocalName == BODY2)
                    {
                        dict.Add(BODY2, reader.ReadString().Trim());
                    }
                }
            }
        }

        public Dictionary getInfo()
        {
            return dict;
        }
    }
}

 

生成XML文件如下:

 

<?xml version="1.0" encoding="utf-8"?>
<info>
    <database>
        <contection><![CDATA[Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={HOST})(PORT={PORT})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={SERVICE_NAME})));User Id={UID};Password={PWD};]]></contection>
    </database>
    <smtp>
        <host>SMTP POST</host>
        <port>SMTP PORT</port>
        <username>SMTP USERNAME</username>
        <password>SMTP PASSWORD</password>
    </smtp>
    <mail>
        <from>FROM</from>
        <to>TO</to>
        <sendmail>
            <subject1>SUBJECT1subject1>
            <body1><![CDATA[BODY1]]></body1>
        </sendmail>
        <datageneration>
            <subject2>SUBJECT2</subject2>
            <body2><![CDATA[BODY2]]></body2>
        </datageneration>
    </mail>
</info>
 

 

 

 

 

分享到:
评论

相关推荐

    c#读写XML文件 超好用

    根据给定文件的信息,本文将深入探讨如何使用C#进行XML文件的读写操作,并详细介绍相关的知识点和技术细节。 ### C#中的XML处理简介 在.NET框架中,XML是一种非常重要的数据交换格式,广泛应用于Web服务、配置文件...

    C#读写XML文件

    根据提供的文件信息,本文将详细解析C#语言中读写XML文件的相关知识点,包括但不限于XML在C#中的重要性、常用的命名空间、读写XML文件的具体实现方式等。 ### C#与XML #### XML的重要性 XML(Extensible Markup ...

    c#读写XML文件

    本篇文章将探讨C#如何进行XML文件的读写操作,并对关键类进行详细说明。 首先,XML在.NET框架中的基础是System.Xml命名空间,它包含了处理XML文档的主要类。其中,XmlReader类是读取XML文档的基础,提供了一系列...

    C#如何读写xml文件

    【C# 读写XML文件】 XML(Extensible Markup Language)是一种结构化数据格式,广泛应用在数据交换、配置文件和存储轻量级数据中。C#提供了丰富的类库来支持XML的处理,使得程序员可以方便地进行XML的读取和写入操作...

    xml.rar_vs2008 x_vs2008 文件_xml_xml vs_xml vs2008

    5. **XML文本读写器(XmlTextReader/XmlTextWriter)**:这些类提供了流式处理XML的能力,适合处理大型XML文件,因为它们不需要将整个文件加载到内存中。 ```csharp using (XmlTextReader reader = new ...

    读写XML源码

    `Form1.cs`则包含了窗体的逻辑处理,如事件处理程序,这是实现XML读写功能的核心部分。在`Form1.cs`中,你可能找到类似以下的代码来加载XML文件到文本框: ```csharp private void LoadXml_Click(object sender, ...

    C#读写XML实例(Visual Sudio2008)

    确保在尝试读写XML时添加适当的异常处理。 6. **使用Visual Studio 2008的集成开发环境** Visual Studio 2008提供了一个强大的集成开发环境,包括代码提示、调试工具以及XML编辑器,可以帮助开发者更高效地编写和...

    Xmltest.zip

    2. **XmlNodeReader/XmlNodeWriter**: 这两个类提供了一种流式读写XML的方式,适用于大型XML文档。 3. **XmlTextReader/XmlTextWriter**: 类似于XmlNodeReader/XmlNodeWriter,但更轻量级,适合简单的读写任务。 4...

    Xml文件的写读

    在C#中,我们可以使用`XmlTextWriter`或`XmlDocument`类来创建新的XML文件。`XmlTextWriter`提供了一种流式的方式写入XML,而`XmlDocument`则允许更灵活的DOM(Document Object Model)操作。 1. 使用`...

    C#读取Xml文件 C#读取Xml文件

    总的来说,C#通过`System.Xml`命名空间及其子命名空间提供了强大的XML处理能力,无论是在简单的文件读写还是复杂的XML数据操作和转换,都可以轻松应对。熟悉这些类和方法,将极大地提高开发效率。

    【ASP.NET编程知识】.net读写xml文档详解.docx

    1. **System.Xml**:这个命名空间是处理XML的基础,其中包含了一系列用于读写XML文档的类。例如: - **XmlReader** 和 **XmlTextReader** 提供了只读、向前的XML解析器,用于高效地遍历XML文档。 - **...

    ACF-4.0

    在处理XML文档时,`XmlTextReader`和`XmlTextWriter`是.NET Framework中两个非常重要的类,它们为XML的读取和写入提供了高效且灵活的方式。在ACF-4.0版本中,这两个类的功能得到了进一步优化和增强,使得XML操作更加...

    C# wince xml读写

    在Windows CE(简称Wince)环境下,C#程序员经常需要处理XML文件,因为XML作为一种结构化数据存储方式,被广泛用于配置文件、数据传输和序列化等场景。本篇文章将详细探讨如何在C#中对XML进行读取、修改以及写入操作...

    .net读写xml文档详解

    本文将详细介绍.NET中读写XML文档的相关知识点,并提供示例代码供参考。 首先,.NET框架中主要与XML相关的命名空间包括: 1. System.Xml:包含了处理XML文档的核心类,如XmlReader、XmlTextReader、...

    pb9操作xml

    - PB9内置了对XML的支持,提供了XMLTextReader和XMLTextWriter类,用于读写XML文档。 - PB9也支持DOM(Document Object Model)模型,这是一种树形结构,允许程序通过节点操作XML。 3. **读取XML**: - 使用...

    XML的各种读写,适合对XML的初学者!!!

    以上就是XML读写的基本操作,包括使用XmlTextReader、XmlNodeReader进行读取,以及XmlTextWriter和XmlDocument进行写入。XPath作为强大的查询工具,可以帮助我们高效地定位和提取XML中的数据。实践中,可以根据具体...

    真实世界的 XML真实世界的 XML

    真实世界的 XML 在 .NET 框架中,处理 XML 数据主要依赖于两类核心类:XmlTextReader 和 XmlTextWriter。这两个类分别用于读取和写入 XML 文档,它们提供了高效且灵活的方式来操作 XML 数据。 XmlTextReader 是一个...

    ASP.Net程序设计(新) XML数据操作的运用.doc

    2. **读写XML**:ASP.NET提供了多种API来读写XML文件。例如,`XmlTextReader`类用于高效地读取XML文档,它支持向前只读的流式访问,不保存整个文档到内存。而`XmlTextWriter`类则用于创建和修改XML文档,它允许以流...

    C#XML入门经典书籍

    6. **XML文本读写器**:包括XmlTextReader和XmlTextWriter,它们提供了一种高效的方式,用于逐个节点地读取和写入XML文档,适用于处理大型XML文件。 7. **异步操作**:在处理大文件或网络流时,使用异步方法可以...

Global site tag (gtag.js) - Google Analytics