zoukankan      html  css  js  c++  java
  • xml解析

     1.XML元素 XML元素包含一个开标记、元素中的数据、闭标记

    例如:<book>book name</book> 其中book是元素名称  book name是元素数据 元素名称区分大小写 每一个XML文档中必须有一个根元素

    2.XML属性 属性添加在元素的开标记内 <book titile = "book name"></book>或者<book title = 'book name'></book> 属性的值可以用双引号也可以用单引号

    3.元素与属性举例 <book><title>book name</title></book> < book title = "book name"></book> 上述两种没有本质的区别,但使用时建议使用第一种,因为可以对元素增加属性或子元素,但是不能这样操作属性。

    4.XML读取解析 DOM解析XML文档:XML的文档结构是个树状结构 DOM的类在System.Xml中 XmlDocument:用于加载XML文件存放的磁盘位置 XmlNode:这个类表示文档书中的一个节点 XmlNodeList:表示一个节点的集合 XmlElement:表示XML文档中的一个元素 XmlAttribute:表示XML的一个属性 XmlText:表示开标记和闭标记之间的文本

    (1)XmlDocument:加载xml文档 例:XmlDocument document = new XmlDocument();     document.load(@"D:C#ooks.xml");

    (2)XmlElement:用于返回一个元素实例    XmlElement element = document.DocumentElement; //常用来返回一个根节点    XmlElement类包含许多方法和属性,可以处理树的节点和属性   

    1)FirstChild:返回根元素节点后的第一个子节点   

    2)LastChild:返回根元素节点后的最后一个子节点

    3)ParentNode:返回当前元素的父节点

    4)NextSibling:返回当前节点的父节点下的下一个节点

    5)HasChildNodes:用来检查当前元素是否有子元素

    (3)XmlText:表示开关标记之间的文本,是特殊的节点,属性有:

     1)InnerText:获取当前节点范围内的所有子节点的文本连接起来的字符串

    2)InnerXml:获取当前节点范围内的所有子节点的文本连接起来的字符串,包含标记

    5.XML修改解析  

    (1)创建节点   

    创建节点方法:   

    1)CreateElement:用来创建XmlDocument类型的节点

    2)CreateAttribute:用来创建XmlAttribute类型的节点  

    3)CreateTextNode:用来创建XmlTextNode类型的节点  

    4)CreateNode:用来创建任意类型的节点,包含上述三种以及其他

       创建节点后添加操作:

    1)AppendChild:把创建的节点类型追加到XmlNode类型或其他派生类型的节点后

     2)InsertAfter:将新节点插入到特定的位置   

    3)InsertBefore:将新节点插入到特定位置  

    (2)删除节点  

    1)RemoveChild:删除当前节点范围内的一个指定的子节点  

    2)RemoveAll:删除该节点范围内的所有子节点  

    (3)修改节点  

    1)ReplaceChild:用新子节点替换旧子节点

    6.XML查询解析  

    (1)使用XmlDocument 方法   

    XmlDocument document = new XmlDocument();   

    document.Load(filePath);   

    XmlNodeList list = document.GetElementsByTagName("book");   

    foreach (XmlNode node in list)   

    {      listBox1.Items.Add(node.Name);//listBox1类型是ListBox    }  

    (2)使用XPath选择特定的节点的方法  

    1)SelectSingleNode:用来选择一个节点,如果有多个,则返回第一个节点  

    2)SelectNodes:返回一个节点的集合,类型是XmlNodesList  选择特定的节点的方法参数XPath   XPath是XML文档的查询语言

     选择特定的节点的方法参数XPath   XPath是XML文档的查询语言

    7.XML解析代码

      1 using System;
      2 using System.Data;
      3 using System.Drawing;
      4 using System.Text;
      5 using System.Windows.Forms;
      6 using System.IO;
      7 using System.Xml;
      8 
      9 namespace Update
     10 {
     11     public partial class Form1 : Form
     12     {
     13 
     14         string filePath = Directory.GetCurrentDirectory() + @"uploadXML.xml";
     15         public Form1()
     16         {
     17             InitializeComponent();
     18         }
     19 
     20         //读取xml
     21         private void button1_Click(object sender, EventArgs e)
     22         {
     23 
     24             if (File.Exists(filePath))
     25             {
     26 
     27                 XmlDocument document = new XmlDocument();
     28                 document.Load(filePath);
     29                 XmlNode root = (XmlNode)document.DocumentElement;
     30                 //循环展示成树状
     31                 xmlProcess(root,0);
     32 
     33             }
     34           
     35         }
     36         
     37 
     38         /*
     39          * 循环展示成树状
     40          */
     41         private void xmlProcess(XmlNode root,int i) 
     42         {
     43 
     44             if (root == null) 
     45             {
     46                 return;
     47             }
     48             if (root is XmlElement) 
     49             {
     50                 listBox1.Items.Add(root.Name.PadLeft(root.Name.Length + i));
     51                 if (root.HasChildNodes) 
     52                 {
     53                     xmlProcess(root.FirstChild,i+2);
     54                 }
     55                 if (root.NextSibling != null) 
     56                 {
     57                     xmlProcess(root.NextSibling, i);
     58                 }
     59 
     60             }
     61             else if (root is XmlText) 
     62             {
     63                 string text = ((XmlText)root).Value;
     64                 listBox1.Items.Add(text.PadLeft(text.Length+i));
     65             }
     66         }
     67 
     68         //读取文本节点
     69         private void button2_Click(object sender, EventArgs e)
     70         {
     71             XmlDocument document = new XmlDocument();
     72             document.Load(filePath);
     73             XmlNode root = (XmlNode)document.DocumentElement;
     74             string values = root.InnerText;
     75             string values2 = root.InnerXml;
     76             string values3 = root.Value;
     77             MessageBox.Show(values);
     78             MessageBox.Show(values2);
     79             MessageBox.Show(values3);
     80         }
     81         //添加节点
     82         private void button3_Click(object sender, EventArgs e)
     83         {
     84             XmlDocument document = new XmlDocument();
     85             document.Load(filePath);
     86             XmlElement root = document.DocumentElement;
     87 
     88             //create node
     89             XmlElement newBook = document.CreateElement("book");
     90             XmlElement newTitle = document.CreateElement("title");
     91             XmlElement newAuthor = document.CreateElement("author");
     92             
     93             //create text
     94             XmlText titleText = document.CreateTextNode("new title");
     95             XmlText authorText = document.CreateTextNode("new author");
     96 
     97             //insert
     98             newTitle.AppendChild(titleText);
     99             newAuthor.AppendChild(authorText);
    100 
    101             newBook.AppendChild(newTitle);
    102             newBook.AppendChild(newAuthor);
    103 
    104             root.AppendChild(newBook);
    105 
    106             //save
    107             document.Save(filePath);
    108 
    109 
    110 
    111 
    112         }
    113         //删除节点
    114         private void button4_Click(object sender, EventArgs e)
    115         {
    116             XmlDocument document = new XmlDocument();
    117             document.Load(filePath);
    118             XmlElement root = document.DocumentElement;
    119             if (root.HasChildNodes) 
    120             {
    121                 XmlNode old = root.LastChild;
    122                 root.RemoveChild(old);
    123             }
    124 
    125             document.Save(filePath);
    126 
    127         }
    128         //修改节点
    129         private void button5_Click(object sender, EventArgs e)
    130         {
    131             XmlDocument document = new XmlDocument();
    132             document.Load(filePath);
    133             XmlElement root = document.DocumentElement;
    134             if (root.HasChildNodes)
    135             {
    136                 XmlNode oldNode = root.LastChild;
    137                 XmlNode newNode = document.CreateElement("Book");
    138                 root.ReplaceChild(newNode, oldNode);
    139             }
    140 
    141             document.Save(filePath);
    142 
    143         }
    144         //查询节点
    145         private void button6_Click(object sender, EventArgs e)
    146         {
    147             listBox1.Items.Clear();
    148 
    149             XmlDocument document = new XmlDocument();
    150             document.Load(filePath);
    151             XmlNodeList list = document.GetElementsByTagName("book");//要查询的的节点名
    152             foreach (XmlNode node in list) 
    153             {
    154                 listBox1.Items.Add(node.Name);
    155             }
    156         }
    157 
    158     }
    159 }
    View Code
  • 相关阅读:
    jQuery+Ajax滚屏异步加载数据实现(附源码)
    EasyUI管理后台模板(附源码)
    jQuery带遮罩层弹窗实现(附源码)
    jQuery相册预览简单实现(附源码)
    node.js应用脚手架:koa2、sequelize、mysql
    React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(二)
    React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)
    过了一年,再来回顾一下去年到现在,这一年多,作为初级前端小白的坎坷成长历程
    作为一名初级前端小白,写在年初的一些话
    关于jQuery中,animate、slide、fade等动画的连续触发、滞后反复执行的bug的个人解决办法
  • 原文地址:https://www.cnblogs.com/lh123/p/3964354.html
Copyright © 2011-2022 走看看