`
追梦--
  • 浏览: 37946 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

C# Xml文档操作快速上手

    博客分类:
  • c #
阅读更多
   现在各大数据库公司都在开发Xml数据库(非关系型),而C#将对Xml的操作集成到了语言中,使得程序操作Xml 十分简便,现在让你快速上手Xml操作。
首先我们要知道Xml是树形结构,所以节点的概念十分重要。我们先要知道这些方法和类,具体的应用见下面的代码。

XmlDocument Xml文档类
     重要方法有:
         Load(xmlPath);   //载入Xml文档,xmlPath为路径
         Save(xmlPath);   //保存Xml文档
     重要属性
          DocumentElement  //根节点

XmlElement 节点类
     重要方法:
         PrependChild(XmlElement childNode); //将childNode 添加到当前节点的第一个子节点
         AppendChild(XmlElement childNode); //将childNode 添加到当前节点的最后一个子节点
         SetAttribute(string "属性名",string "属性值");//设置当前节点属性
         SelectNodes(string 条件);  //通过条件得到子节点,若有多个,返回第一个具体见代码
         SelectSingleNode();      //意义同上,返回所有节点  xmlNodeList类
        
     重要属性:
          InnerText          //节点中的内容
          ChildNodes         //所有子节点  xmlNodeList类
          ParentNode        //父节点

先往一个Xml文档写入,再读取其中的内容
   
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace XmlDeal
{
    //操作Xml文档
    class XmlDeal
    {
        private XmlDocument doc;
        private string xmlPath = "C:\\Users\\Administrator\\Desktop\\test.xml";
        public XmlDeal() {
            doc = new XmlDocument();
            //加载 Xml(在这之前,你得确保xml中有一个根节点,否则会报错),还可以用流来加载,这里就不演示了
            doc.Load(xmlPath);
        }
        public void xmlWrite() {
            //移除根节点下的所有节点

            doc.DocumentElement.RemoveAll();
            
            //注意如果按下面的写法写的话,会有一些节点没有被删除,以为根节点的子节点的count在变化,读者好好体会吧
            //foreach (XmlElement rootNode in doc.DocumentElement.ChildNodes) {
            //    rootNode.ParentNode.RemoveChild(rootNode);
            //}

            XmlElement node = doc.CreateElement("小说");
            //设置属性
            node.SetAttribute("序号","1");

            //新建子节点
            XmlElement childNode1 = doc.CreateElement("书名");
            node.PrependChild(childNode1);
            childNode1.InnerText = "哈利 波特";
            //插入到父节点的末尾
            node.AppendChild(childNode1);

            XmlElement childNode2 = doc.CreateElement("作者");
            node.PrependChild(childNode2);
            childNode2.InnerText = "杰克 罗琳";
            node.AppendChild(childNode2);

            XmlElement node2 = doc.CreateElement("小说");
            node2.SetAttribute("序号", "2");

            //新建子节点
            XmlElement childNode21 = doc.CreateElement("书名");
            node.PrependChild(childNode21);
            childNode21.InnerText = "致青春";
            //插入到父节点的末尾
            node2.AppendChild(childNode21);

            XmlElement childNode22 = doc.CreateElement("作者");
            node.PrependChild(childNode22);
            childNode22.InnerText = "辛夷坞";
            node2.AppendChild(childNode22);


            //获取文档的根节点,并将 node 添加到根节点的子节点的开头,注意append 不会覆盖以前的数据
            doc.DocumentElement.AppendChild(node);
            doc.DocumentElement.AppendChild(node2);
            doc.Save(xmlPath);
        }

        //查找读入xml中的信息
        public void xmlRead() {
            //得到父节点
            XmlElement root = doc.DocumentElement;

            //得到文本中内容的方法一,通过不断获得子节点获得其中的内容
            XmlNodeList nodeList = root.ChildNodes;
            foreach(XmlElement node in nodeList){
                foreach(XmlElement child in node.ChildNodes){
                    Console.WriteLine(child.InnerText);
                }
            }

            Console.WriteLine();

            //得到文本中的内容的方法二,通过表达式,读者可以比较下区别
            XmlNode node1 = doc.SelectSingleNode("/Book/小说/书名");
            Console.WriteLine(node1.InnerText);

            //[]中的是条件格式为  节点[@属性名='属性值']
            XmlNode node2 = doc.SelectSingleNode("/Book/小说[@序号= '2']/书名");
            Console.WriteLine(node2.InnerText);

            //通过节点名获得属性值
              Console.WriteLine(node2.Attributes["序号"].Value);
            
        }
        public static void Main(string[] args) {
            XmlDeal xmlDeal = new XmlDeal();
            xmlDeal.xmlWrite();
            xmlDeal.xmlRead();
            while (true) { }
        }
    }
    

}

写入的Xml文件内容如下:
<Book>
  <小说 序号="1">
    <书名>哈利 波特</书名>
    <作者>杰克 罗琳</作者>
  </小说>
  <小说 序号="2">
    <书名>致青春</书名>
    <作者>辛夷坞</作者>
  </小说>
</Book>


输出如下:


哈利 波特
杰克 罗琳
致青春
辛夷坞

哈利 波特
致青春
2

若文章有知识性错误,欢迎指正!

0
1
分享到:
评论

相关推荐

    C#操作XML的基本方法

    通过动手实践,你可以快速上手C#操作XML,为后续的开发工作打下坚实基础。 总之,C#与XML的结合使得数据处理变得简单高效,无论是在Web应用程序还是桌面应用中,XML都是数据交换和存储的重要选择。通过学习和熟练...

    C#操作--创建XML文档

    本资源主要聚焦于使用C#语言来操作XML文档的创建过程,这对于开发者来说是一项基础但重要的技能。下面我们将深入探讨C#如何创建XML文档,以及它在实际应用中的价值。 首先,创建XML文档的核心在于使用C#的System....

    C# XML ReadWrite示例

    在C#编程中,XML(eXtensible Markup Language)是...通过理解这些基本操作,开发者能够轻松地处理XML文件,无论是读取现有数据还是构建新的XML文档。对于初学者来说,只需花费几分钟时间研究这些示例,就能快速上手。

    C#简单操作XML完整示例源码

    本示例源码主要展示了如何在C#中对XML进行基础操作,包括读取、写入、修改和解析XML文档。 1. XML的基本概念: - XML是一种标记语言,用于描述数据结构和内容。 - 它的核心元素是节点,包括元素(Element)、属性...

    图书馆信息管理系统.c#开发+XML数据库

    通过创建XML数据源,开发者可以利用XPath或XQuery来定位和操作XML文档中的特定节点,实现对图书数据的操作。 用户界面设计人性化,采用Windows Forms,提供直观的图形界面,使得操作员可以轻松上手。C#的控件库丰富...

    xml多行变一行工具xml多行变一行工具

    6. **用户界面友好**:简洁的用户界面,使得操作直观易懂,即使是对技术不太熟悉的用户也能快速上手。 在使用这个工具时,开发者需要注意以下几点: 1. **备份原文件**:在转换前,确保对原始XML文件进行备份,以防...

    微软官方的C#学习文档

    其中,LINQ(Language Integrated Query)是C#中强大的数据查询工具,它允许开发者以类似SQL的方式在各种数据源上进行查询,包括内存中的数据集、数据库和XML文档。 表达式树是C#中另一种高级特性,它允许程序分析...

    XMLHelper数据操作类

    XMLHelper是一个C#编写的类,用于处理XML文档的各种操作,包括读取、修改、删除、新增和创建XML元素。这个类设计为一个基类,可以被继承以实现更具体的功能。以下是XMLHelper类的一些核心知识点和功能: 1. **XML...

    C#帮助文档.rar

    C#是一种广泛应用于软件...此文档通过图文并茂的方式,使读者更容易理解复杂的概念,帮助他们快速上手C#编程,提升编程能力。无论你是初学者还是有一定经验的开发者,都可以从中受益匪浅,加深对C#和.NET框架的理解。

    C# 个人的练习上手项目

    在这个"C#个人练习上手项目"中,你可以通过实践以上知识点,逐步提升自己的C#编程能力。通过分析、修改和扩展项目代码,你可以深入理解这些概念,并将其应用于实际项目中。同时,不断查阅文档、参考书籍和在线教程,...

    NQuery(基于XML文件的数据库接口)

    2. **NQuery语法**:NQuery采用了类似SQL的语法,用户可以通过SELECT、FROM、WHERE等语句对XML文档中的数据进行查询。这使得熟悉SQL的开发者能够快速上手。 3. **数据模型**:NQuery将XML文档视为一个或多个表格,...

    Office Open XML C# Library-开源

    `WarstarDev.Office2k7.Demo`目录包含了示例代码,开发者可以参考这些示例快速上手,了解如何使用该库进行实际操作,如读取文档内容、修改样式、插入图片等。 `LICENSE`文件则是开源许可协议,表明了`WarstarDev....

    C#知识类库,包含大量的C#基础操作

    3. `System.Xml`:处理XML文档的类库,用于读取、写入和操作XML数据。 4. `System.Windows.Forms` 和 `System.Windows.Controls`:用于Windows桌面应用开发,提供用户界面控件和事件处理。 5. `System.Data....

    C# 用于标准谷歌KML文件解析源码

    标题中的"C# 用于标准谷歌KML文件解析源码"表明了这是一个使用C#编程语言编写的库,...同时,附带的示例和单元测试能帮助快速上手并确保代码的正确运行。对于需要处理KML数据的项目,这个库是一个非常有价值的资源。

    xml SDK大全,包括3.0~6.0总共4个版本

    MSXML是微软提供的一套API,它允许程序员在各种微软平台上解析、操作和生成XML文档。SDK(Software Development Kit)是为开发者提供的工具集,包含了库文件、头文件、文档和示例代码,帮助开发者理解和使用这些API...

    microsoft xml sdk 2.5

    此外,SDK中的文档部分(例如,Microsoft XML SDK 2.5.CHM文件)会详细介绍如何使用提供的API,包括函数、类和接口的详细说明,以及示例代码,帮助开发者快速上手。而“中国IT认证实验室学习下载频道.txt”可能是一...

    C#解析html,HtmlAgilityPack

    XPath是一种在XML文档中查找信息的语言,也可应用于HTML。例如,`//title` 查找所有`&lt;title&gt;`元素,`//a/@href` 获取所有`&lt;a&gt;`标签的`href`属性。而LINQ to XML提供了更面向对象的查询方式,对于熟悉LINQ的开发者来...

    WorldWind1.4 C# 帮助文档

    8. **示例代码**:通过实例代码演示常见功能的实现,帮助开发者快速上手。 9. **错误处理与调试**:指导如何解决开发过程中遇到的问题,以及有效的调试方法。 10. **社区与资源**:介绍WorldWind开发者社区,提供...

    c#函数库(比较常用)

    LINQ是C#的一个强大特性,提供了统一的查询接口,用于处理各种数据源,如数据库、XML文档和集合。使用`from`、`where`、`select`等关键字可以方便地进行数据过滤、投影和连接。 九、异步编程 C#引入了`async`和`...

Global site tag (gtag.js) - Google Analytics