http://www.cnblogs.com/fengxuehuanlin/p/5631664.html

关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作。

xml可作为小型数据库用来存储数据。

html主要用来显示数据,XAML前台设计。

一.什么是XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)--可扩展意味着标签可以自定义,不像html固定标签。
  • XML 是一种标记语言,很类似HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义,您需要自行定义标签
  • XML 被设计为具有自我描述性
  • XML 是W3C 的推荐标准

二.XML语法:

1.一个XML包含以下几部分内容:

文档声明,元素,属性,注释,CDATA(特殊字符),处理指令,node节点

  • 节点包含元素(文本中见到的所有东西都是节点,元素指的是标签)。
  • 只能有一个根节点
2.最简单的声明格式     
  1. <?xml version="1.0" ?>
  2. 用encoding属性声明文档的编码
  3. <?xml version="1.0" encoding="UTF-8" ?>
  4. 用standalone属性说明文档是否独立
  5. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

三、写入XML内容:

  • dom-document object model(XmlDocument文档对象),注意必须先有一个根节点。
  1. //通过代码来创建XML文档
  2. //1、引用命名空间
  3. //2、创建XML文档对象
  4. XmlDocument doc = new XmlDocument();
  5. //3.创建第一行描述信息,添加到doc文档中
  6. XmlDeclaration dec= doc.CreateXmlDeclaration("1.0", "utf-8", null);
  7. doc.AppendChild(dec);
  8.  
  9. //4.创建根节点
  10. XmlElement siemens = doc.CreateElement("Siemens");
  11. doc.AppendChild(siemens);
  12.  
  13. //5.给根节点books创建子节点
  14. XmlElement opcua = doc.CreateElement("OPCUA");
  15. siemens.AppendChild(opcua);
  16.  
  17. //6.给book1添加子节点
  18. XmlElement plc1 = doc.CreateElement("PLC1");
  19. plc1.InnerText = "_84303";
  20. opcua.AppendChild(plc1);
  21.  
  22. XmlElement plc2 = doc.CreateElement("PLC2");
  23. plc2.InnerText = "_87303";
  24. opcua.AppendChild(plc2);
  25.  
  26. XmlElement plc3 = doc.CreateElement("PLC3");
  27. plc3.InnerText = "_89303";
  28. opcua.AppendChild(plc3);
  29.  
  30. XmlElement plc4 = doc.CreateElement("PLC4");
  31. plc4.InnerXml = "<a>我就发而非</a>";
  32. opcua.AppendChild(plc4);
  33.  
  34. XmlElement plc4_1 = doc.CreateElement("年级");
  35. plc4_1.SetAttribute("名字","小明");
  36. plc4_1.InnerXml = "学前班";
  37. plc4.AppendChild(plc4_1);
  38. doc.Save("Siemens.xml");

  1. XmlDocument doc2 = new XmlDocument();
  2. XmlDeclaration des2 = doc2.CreateXmlDeclaration("1.0","utf-8",null);
  3. doc2.AppendChild(des2);
  4.  
  5. XmlElement person = doc2.CreateElement("Person");
  6. doc2.AppendChild(person);
  7.  
  8. for(int i=;i<lstudent.Count;i++)
  9. {
  10. XmlElement student = doc2.CreateElement("Studemt");
  11. student.SetAttribute("ID",lstudent[i].id.ToString());
  12. XmlElement name = doc2.CreateElement("Name");
  13. name.InnerXml = lstudent[i].name;
  14. XmlElement age = doc2.CreateElement("Age");
  15. age.InnerXml = lstudent[i].age.ToString();
  16. XmlElement gender = doc2.CreateElement("Gender");
  17. gender.InnerXml = lstudent[i].gender.ToString();
  18.  
  19. person.AppendChild(student);
  20. student.AppendChild(name);
  21. student.AppendChild(age);
  22. student.AppendChild(gender);
  23. }
  24.  
  25. doc2.Save("student.xml");

四.XML文件的读取:

xml文件内容:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <library id="30">
  3. <BOOK id="20">
  4. <name>高等数学</name>
  5. <name1>大学英语</name1>
  6. </BOOK>
  7. </library>

读取XML内容:

  1. static void Main(string[] args)
  2. {
  3. //将XML文件加载进来
  4. XDocument document = XDocument.Load("D:\\123.xml");
  5. //获取到XML的根元素进行操作
  6. XElement root= document.Root;
  7. XElement ele= root.Element("BOOK");
  8. //获取name标签的值
  9. XElement shuxing= ele.Element("name");
  10. Console.WriteLine(shuxing.Value);
  11. //获取根元素下的所有子元素
  12. IEnumerable<XElement> enumerable = root.Elements();
  13. foreach (XElement item in enumerable)
  14. {
  15. foreach (XElement item1 in item.Elements())
  16. {
  17. Console.WriteLine(item1.Name); //输出 name name1
  18. }
  19. Console.WriteLine(item.Attribute("id").Value); //输出20
  20. }
  21. Console.ReadKey();
  22. }

五、增删改查

  1. #region 增删改查
  2. XmlDocument doc3 = new XmlDocument();
  3. if(File.Exists("student.xml"))
  4. {
  5. //存在
  6. //加载文件
  7. doc3.Load("student.xml");
  8. //追加,先要拿到根节点
  9. XmlElement Person = doc3.DocumentElement;
  10. #region 增加
  11. ////追加子节点
  12. //XmlElement student = doc3.CreateElement("Student");
  13. //student.SetAttribute("ID","5");
  14. //Person.AppendChild(student);
  15. //XmlElement ignore = doc3.CreateElement(".....");
  16. //student.AppendChild(ignore);
  17. #endregion
  18. #region 改查
  19. //改查1--获取子节点的方法
  20. //XmlNodeList ndoes = Person.ChildNodes;
  21. //foreach(XmlNode xnode in ndoes)
  22. //{
  23. // //不包含属性
  24. // Console.WriteLine(xnode.InnerText);
  25. // //属性信息
  26. // Console.WriteLine(xnode.Attributes["ID"].Value);
  27. // if(xnode.Attributes["ID"].Value=="3")
  28. // {
  29. // xnode.Attributes["ID"].Value = "改";
  30. // }
  31. //}
  32. //改查2---xmlpath的方法
  33. XmlNode node = Person.SelectSingleNode("/Person/Student");
  34. Console.WriteLine(node.InnerText);
  35.  
  36. //直接找某一个子节点
  37. XmlNode node1 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");
  38. node1.InnerText = "不男不女";
  39. Console.WriteLine(node1.InnerText);
  40. Console.ReadKey();
  41. #endregion 改查
  42. #region 删除
  43. //根节点不能删除
  44. // doc3.RemoveAll();
  45.  
  46. //移除的节点必须是操作节点的子集
  47. XmlNode node2 = Person.SelectSingleNode("/Person/Student[@ID='2']/Gender");
  48. //Person.RemoveChild(node2);
  49. XmlNode nodep = Person.SelectSingleNode("/Person/Student[@ID='2']/");
  50. nodep.RemoveChild(node2);
  51.  
  52. //移除属性
  53. nodep.Attributes.RemoveNamedItem("ID");
  54. #endregion
  55.  
  56. }
  57. else
  58. {
  59. //不存在
  60. XmlDeclaration des3 = doc3.CreateXmlDeclaration("1.0", "utf-8", null);
  61. doc3.AppendChild(des3);
  62. //添加根节点
  63. XmlElement person3 = doc3.CreateElement("Person");
  64. doc3.AppendChild(person3);
  65.  
  66. }
  67.  
  68. doc3.Save("student.xml");
  69. #endregion

C#-XML-数据传输的更多相关文章

  1. iOS网络编程解析协议二:XML数据传输解析

    XML两种解析方式,一种是SAX,NSXMLParser是SAX方法解析,另一种是DOM(Document Object Model); 区别: SAX: 只能读,不能修改,只能顺序访问,适合解析大型 ...

  2. xml数据传输

  3. Xml 学习

    XML概述 XML的历史背景 GML(1969):通用标记语言 IBM公司的一些专家们一起研究的一个课题: 软件必须有高度的可移植性,而且必须有一个统一的标准.为了实现软件的一处编写多处运行这个愿景所 ...

  4. 第70节:Java中xml和tomcat

    第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...

  5. Java HttpClient Post请求参数格式为XML

    1.最近忙着做一个接口,拿到文档的时候,what?我当时就震惊了,全都是XML数据传输. 我当时就懵了,哎没得办法,在暑假传输这方面笔者比较熟练json格式数据,简单易懂啊 那就学呗. 2.我在使用的 ...

  6. XML学习笔记--背诵版

    前言 一直想系统性的学XML,就没时间学,今晚抽出几个小时时间学完了XML.过几天再过来看看,背一背应该就差不多,记得东西较多,没什么难理解的. XML数据传输格式 第一章 XML概述 1.1 引入 ...

  7. 开源Jabber(XMPP) IM服务器介绍

    一.摘要 这是我粗略读了一遍Jabber协议和相关技术文章后的产物,有些地方不一定准确.在文章中引用的一些代码来自www.jabber.org上的文章. 二. 什么是Jabber    Jabber就 ...

  8. iOS之即时通讯相关理解

    Socket: 1>Socket又称"套接字" 2>网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 3>应用程序通常通 ...

  9. Ajax 学习总结

    Ajax 技术在 JavaWeb 应用中随处可见,比如购物车中根据商品数量及时更新等应用,那么我们今天就来说说 Ajax 的一些小应用! Ajax 技术也就是允许浏览器与服务器通信而无需刷新当前页面, ...

  10. iOS - IM 即时通讯

    1.即时通讯技术 即时通讯(IM:Instant Messaging):又称实时通讯,支持用户在线实时交谈,允许两人或多人使用网络实时的传递文字消息.文件.语音与视频交流. 即时通讯在开发中使用的场景 ...

随机推荐

  1. vs2010启动越来越慢解决方法

    自己用的电脑中vs2010启动总是越来越慢,耽误时间,用了下面的方法试了一下,效果还不错,如果你的vs2010也是,遇到这种问题不妨试一试: 1.重新设置了vs2010的环境(在vs2010命令提示符 ...

  2. (7.0 version)当销售单中包含service或phantom类型的产品时,销售单不能完成的原因分析及解决方案

    首先说一下service类型的产品,由于该类型的产品不需要发货,所以当在销售订单确认了后,销售单直接变成了等待开票的状态,但当开票的流程结束后,订单却还是停在销售单的状态上,该问题的解决方案是安装Ta ...

  3. 3Q大战现高潮,360 推出Android "3Q" IM即时通讯,岁末年初3Q大战惊现高潮

    岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯       看过了QQ和360斗争的开端高潮,当然现在还不能说这场斗争已经结束,在我看来这次的事件未 ...

  4. C 标准库 - string.h之memcpy使用

    memcpy Copy block of memory Copies the values of num bytes from the location pointed to by source di ...

  5. 查看windows系统块大小

    C:\Users\xyw>fsutil fsinfo ntfsinfo 用法 : fsutil fsinfo ntfsinfo <volume pathname> 例如 : fsut ...

  6. RestTemplate的一个请求过程,mark一下

    来看下RestTemplate中默认的的ResponseErrorHandler: package org.springframework.web.client; import java.io.IOE ...

  7. Idea软件Vim插件问题

    人家说用webstorm是纯前端,用Idea是java+前端,好,那就用Idea,装上试试,全选所有插件安装,奇迹出现了,选中一行代码,backspace,删不了,我的天,好吧,复制粘贴的快捷键也不行 ...

  8. android LinearLayout

    Android的布局方式共有6种,分别是LinearLayout(线性布局).TableLayout(表格布局).FrameLayout(帧布局).RelativeLayout(相对布局).GridL ...

  9. sublime text3 JS语法检测插件

    首先ctrl+shift+P用包管理器安装sublimeLinter和sublimeLinter-jshint 前往node官网下载nodejs并安装 安装完node后打开命令行输入npm insta ...

  10. JAVA将数字钱数转换为大写

    1.Java文件的编写 package com.cwai.xtag; import java.util.Scanner; public class Num2Rmb { private String[] ...