zoukankan      html  css  js  c++  java
  • XML

    XML是一种简单数据存储语言,以文本的形式将数据存储到文件。

    XML文件结构

    • XML声明<?xml version="1.0" encoding="utf-8"?>包括版本和编码声明
    • XML元素 <开始>结束为一个元素,包括名称和属性,也可包括子元素(开始节点和结束节点中)。
    • XML节点:一个抽象概念,xml组成一棵树,每个节点有名称和类型

    通过流操作XML

    既然xml以文本保存在文件中,可以通过字符流操TextWriter作文件。当然方便操作xml文档结构提供了XmlTextWriter,XmlTextReader。这里设计到文件流的操作,对于写入流:内存为流的源,硬盘文件为流的目的地。

    		using (XmlTextWriter writer = new XmlTextWriter(@"E:MyBook.xml", Encoding.UTF8))
    			{
    				//声明xml为1.0
    				writer.WriteStartDocument();
    				writer.WriteStartElement("MyBook");
    				writer.WriteAttributeString("id", "1");
    				writer.WriteAttributeString("name", ".Net Core");
    				writer.WriteElementString("description", ".net 跨平台开发");
    				writer.WriteEndElement();
    			}
    

    通过流读取文件

    			using (XmlTextReader reader = new XmlTextReader(@"E:MyBook.xml"))
    			{
    				//逐个节点遍历
    				while (reader.Read())
    				{
    					//读取节点
    					string node =reader.Name;
    					string attribute = reader.GetAttribute("name");
    				}
    			}
    

    XmlDocument将文件读取到内存中

    通过流操作xml很不方便,尤其对于查找和更改操作。XmlDocument实现是通过将xml文件以对于的形式加载到内存中,再直接操作内存中的xml数据,最后通过保存更改文档内容。
    同大多数文档操作一样通过Load将数据加载到内存,Save将内存数据写入文件(Word和Excel虽然复杂原理应该一样)

    string xmlPath = @"E:MyBook.xml";
    XmlDocument doc = new XmlDocument();
    doc.Load(xmlPath);
    XmlNode node = doc.SelectSingleNode("MyBook/book");
    string nodename =node.Attributes["name"].InnerText;
    
    if(node.NodeType == XmlNodeType.Element)
    {
        XmlElement element = (XmlElement)node;
        element.SetAttribute("name", "Hello");
    }
    doc.Save(xmlPath);
    

    Linq XML

    为更方便的查找xml数据,将xml文件以XElement对象的形式加载到内存,因XElement操作更简单支持Linq查询

    XDocument xdoc = XDocument.Load(xmlPath);
    var result = from ele in xdoc.Descendants("book")
                    where ele.Attribute("name").Value == ".Net Core"
                    select ele;
    
  • 相关阅读:
    Python笔记-面向对象编程
    大学课后答案微信小程序项目实践(1)
    用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写
    react基础学习和react服务端渲染框架next.js踩坑
    基于weex的app开发脚手架weexplus学习笔记
    用weexplus从0到1写一个app
    Vue与React两个框架的区别对比
    mpvue学习笔记-之微信小程序数据请求封装
    Flutter/Dart import导入文件关键字总结
    55个提高你CSS开发效率的必备片段(转自:前段日刊)
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/9118213.html
Copyright © 2011-2022 走看看