标签:des style blog http color os io 使用 ar
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#\books.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 }
标签:des style blog http color os io 使用 ar
原文地址:http://www.cnblogs.com/lh123/p/3964354.html