标签:c# 字符串 .text car 方便 led 返回 long eval
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Xml.Linq; 7 using System.Xml; 8 using System.Xml.Serialization; 9 using System.IO; 10 11 namespace XMLFileOperator 12 { 13 class Program 14 { 15 16 17 static void Main(string[] args) 18 { 19 //XmlWriteXMLDocument(); 20 //XmlReadXMLDocument(); 21 //XmlSerialization(); 22 //LinqToXmlOperator(); 23 // LinqToXmlOperatorAtString(); 24 25 } 26 27 /// <summary> 28 /// Dom中的XDocument 29 /// </summary> 30 public static void XmlWriteXDocument() 31 { 32 #region XML写入 33 //1.创建一个XDocument 34 //创建一个空文档对象 35 XDocument document = new XDocument(); 36 37 //1.1创建一个文档声明 38 XDeclaration xDec = new XDeclaration("1.0", "gb2312", "yes"); 39 //定义文档不能通过Add()增加,需要设置Declaration属性 40 //document.Add(xDec); 41 document.Declaration = xDec; 42 43 //1.2创建一个根节点 44 XElement rootElement = new XElement("Order"); 45 //把根节点加到文档中 46 document.Add(rootElement); 47 48 //1.3增加一个CustomerName节点 49 XElement cstNameElement = new XElement("CustomerName"); 50 cstNameElement.SetValue("name1"); 51 //把其他节点要加到根节点下 52 rootElement.Add(cstNameElement); 53 54 //1.4增加一个OrderNumber节点 55 //通过调用SetElementValue的方式增加一个元素 56 rootElement.SetElementValue("OrderNumber", "BJ200888"); 57 58 //1.5创建一个新对象,Items节点 59 XElement itemElement = new XElement("Items"); 60 rootElement.Add(itemElement); 61 //创建3个OrderItem节点 62 XElement orderItemElement1 = new XElement("OrderItem"); 63 orderItemElement1.SetAttributeValue("Name", "computer"); 64 orderItemElement1.SetAttributeValue("Count", "30"); 65 66 XElement orderItemElement2 = new XElement("OrderItem"); 67 orderItemElement2.SetAttributeValue("Name", "teletvision"); 68 orderItemElement2.SetAttributeValue("Count", "2"); 69 70 XElement orderItemElement3 = new XElement("OrderItem"); 71 orderItemElement3.SetAttributeValue("Name", "classes"); 72 orderItemElement3.SetAttributeValue("Count", "22"); 73 itemElement.Add(orderItemElement1); 74 itemElement.Add(orderItemElement2); 75 itemElement.Add(orderItemElement3); 76 //把这个空文档对象写入到xml文件中 77 document.Save("orders.xml"); 78 Console.WriteLine("ok"); 79 Console.ReadKey(); 80 #endregion 81 82 #region XML写入2 83 84 //List<Person> list = new List<Person>() 85 //{ 86 // new Person() {Name = "lsx",Age=20,Email="lsx@yahoo.com"}, 87 // new Person() {Name = "name1",Age=15,Email="name1@yahoo.com"}, 88 // new Person() {Name = "name2",Age=17,Email="name2@yahoo.com"}, 89 // new Person() {Name = "name3",Age=19,Email="name3@yahoo.com"}, 90 // new Person() {Name = "name4",Age=16,Email="name4@yahoo.com"}, 91 // new Person() {Name = "name5",Age=19,Email="name5@yahoo.com"} 92 //}; 93 94 ////1.创建一个document对象 95 //XDocument document = new XDocument(); 96 97 ////2.设置文档定义 98 //document.Declaration = new XDeclaration("1.0", "gb2312", "yes"); 99 100 ////3.增加根节点 101 //XElement rootElement = new XElement("list"); 102 103 ////遍历list集合,有几个元素对象就创建几个子节点 104 //foreach (Person item in list) 105 //{ 106 // XElement personElement = new XElement("Person"); 107 // personElement.SetElementValue("Name", item.Name); 108 // personElement.SetElementValue("Age", item.Age); 109 // personElement.SetElementValue("Email", item.Email); 110 111 // //把当前的节点PersonElement,加到根节点下 112 // rootElement.Add(personElement); 113 //} 114 115 ////为文档增加根节点 116 //document.Add(rootElement); 117 118 //rootElement.SetAttributeValue("Count", list.Count); 119 120 ////需要把document这个文档对象写入到文件中 121 //document.Save("../list.xml"); 122 123 //Console.WriteLine("ok"); 124 125 #endregion 126 } 127 128 /// <summary> 129 /// Dom中的XDocument 130 /// </summary> 131 public static void XmlReadXDocument() 132 { 133 #region 读取list.xml文件 134 //1.创建一个Dom对象 135 XDocument document = XDocument.Load("list.xml"); 136 //2.一定要找到根节点 137 XElement rootElement = document.Root; 138 139 //判断是否有属性 140 Console.WriteLine(rootElement.Name); 141 //调用输出元素属性的方法 142 PrintAttributes(rootElement); 143 144 //Console.WriteLine(rootElement.Name.ToString()); 145 //2.1获取根节点下的所有子节点 146 /* 147 *不传参数,表示获取根节点下的所有的子元素 148 *如果为Elements()方法传递参数,则表示要获取当前节点下的 149 *所有名字为参数中给定的名字的那些子元素 150 */ 151 //只要返回类型是IEnumerable接口类型的,无论是泛型还是非泛型的都可以在foreach中遍历 152 foreach (XElement element in rootElement.Elements()) 153 { 154 //这个循环就是遍历根元素下的每个子元素 155 //Console.WriteLine(element.Name); 156 Console.WriteLine("节点=================={0}", element.Name); 157 PrintAttributes(element); 158 foreach (var subElement in element.Elements()) 159 { 160 Console.WriteLine("子节点====={0}::{1}", subElement.Name, subElement.Value); 161 PrintAttributes(subElement); 162 } 163 } 164 Console.ReadKey(); 165 #endregion 166 } 167 168 /// <summary> 169 /// Dom中的XmlDocument 170 /// </summary> 171 public static void XmlWriteXMLDocument() 172 { 173 //1.创建一个空的XML文档 174 XmlDocument xmlDoc = new XmlDocument(); 175 176 //2.在XML的文档的最头部加入XML的声明段落,即创建一个声明类型的节点 177 XmlNode xmlNode = xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "", ""); 178 xmlDoc.AppendChild(xmlNode); 179 180 //3.增加注释 181 XmlComment xmlCom = xmlDoc.CreateComment("这是XML文档的注释内容"); 182 xmlDoc.AppendChild(xmlCom); 183 184 //4.为XML文档加入一个元素/加入一个根元素 185 XmlElement xmlelem = xmlDoc.CreateElement("", "Student", ""); 186 //XmlText xmlText = xmlDoc.CreateTextNode("Root Text"); 187 //xmlelem.AppendChild(xmlText); 188 189 //5.增加一个属性 190 XmlAttribute xmlAttr = xmlDoc.CreateAttribute("Professional"); 191 xmlAttr.Value = "Computer"; 192 xmlelem.Attributes.Append(xmlAttr); 193 xmlDoc.AppendChild(xmlelem); 194 195 //6.增加一个子元素 196 XmlElement xmlelem2 = xmlDoc.CreateElement("Name"); 197 XmlText xmltext = xmlDoc.CreateTextNode("name1"); 198 xmlelem2.AppendChild(xmltext); 199 xmlelem.AppendChild(xmlelem2); 200 201 XmlElement xmlelem3 = xmlDoc.CreateElement("Sex"); 202 XmlText xmltext2 = xmlDoc.CreateTextNode("Man"); 203 xmlelem3.AppendChild(xmltext2); 204 xmlelem.AppendChild(xmlelem3); 205 206 try 207 { 208 xmlDoc.Save("test.xml"); 209 } 210 catch (Exception ex) 211 { 212 Console.WriteLine(ex.Message); 213 } 214 } 215 216 /// <summary> 217 /// Dom中的XmlDocument 218 /// </summary> 219 public static void XmlReadXMLDocument() 220 { 221 //1.加载指定的XML文件 222 XmlDocument xDoc = new XmlDocument(); 223 xDoc.Load("test.xml");//4 个重载,4种方式加载Xml 224 //载入XmlTextReader类的对象 225 //XmlTextReader reader = new XmlTextReader("test.xml"); 226 //xDoc.Load(reader); 227 228 229 //1: xn 代表一个结点 230 //2: xn.Name;//这个结点的名称 231 //3: xn.Value;//这个结点的值 232 //4: xn.ChildNodes;//这个结点的所有子结点 233 //5: xn.ParentNode;//这个结点的父结点 234 //2.读取XML的根节点 235 XmlNode xn = xDoc.SelectSingleNode("Student"); 236 //3.根据根节点得到所有的子节点 237 XmlNodeList xnl = xn.ChildNodes; 238 239 } 240 241 242 /* 243 * 所谓序列化,其实就是一个过程,一个将对象的状态信息转换为可以存储或者传输的对象,反序列化就是反过程 244 * 由于XML文件是一个开放的标准,用于不同的用户之间进行数据交换,XML序列化的意义比较大 245 * 另外,关于序列化,我们也可以讲对象的状态信息序列化为二进制数据到磁盘,流,内存,网络,, 246 * 还有javascrip序列化的问题,这三种是比价常见的。 247 */ 248 /// <summary> 249 /// XML序列化 250 /// </summary> 251 public static void XmlSerialization() 252 { 253 #region 对象序列化 254 List<PersonClass> li = new List<PersonClass>(); 255 li.Add(new PersonClass() { Name = "wuxinlong", Age = 18, Email = "wuxinlong@163.com" }); 256 li.Add(new PersonClass() { Name = "Jafh", Age = 14, Email = "Jafh@163.com" }); 257 li.Add(new PersonClass() { Name = "hasdf", Age = 35, Email = "hasdf@163.com" }); 258 //使用XML序列化对象 259 XmlSerializer xmlSerializer = new XmlSerializer(li.GetType()/*typeof(list<PersonClass>)*/); 260 //创建一个文件流,序列化时需要将该流的数据序列化为xml文件 261 //xmlSerializer.Serialize(Stream,object); 262 263 using (FileStream fsWrite = File.OpenWrite("li.xml")) 264 { 265 xmlSerializer.Serialize(fsWrite, li); 266 //xmlSerializer.Deserialize(fsWrite); 267 } 268 Console.WriteLine("ok"); 269 Console.ReadKey(); 270 #endregion 271 272 } 273 274 //LinqToXML是Linq系列中的一个主题,Linq用来操作内存数据比较方便简单,代码量比较少 275 //在操作XML文件的时候类似数据的增删改查 276 public static void LinqToXmlOperator() 277 { 278 #region 创建XML文档 格式固定 279 XDocument inventDoc = 280 new XDocument( 281 new XDeclaration("1.0", "utf-8", "yes"), 282 new XComment("这是一份用Linq创建的XML文档"), 283 new XProcessingInstruction("xml-stylesheet", 284 "href=‘MyStyles.css‘ title=‘Compact‘ type=‘text/css‘"), 285 new XElement("Invent", 286 new XElement("car", new XAttribute("ID", "1"), 287 new XElement("Color", "Green"), 288 new XElement("Mark", "BMW"), 289 new XElement("PetName", "Stan") 290 ), 291 new XElement("car", new XAttribute("ID", "2"), 292 new XElement("Color", "Pink"), 293 new XElement("Mark", "Yugo"), 294 new XElement("PetName", "Melvin") 295 ) 296 ) 297 ); 298 //保存 299 inventDoc.Save("inventDoc.xml"); 300 #endregion 301 } 302 303 /// <summary> 304 /// 通过数组生成XML文档 305 /// </summary> 306 public static void LinqToXmlOperatorAtArray() 307 { 308 #region 从数组和容器中生成文档 309 //实际意义比较大,因为我们在实际中获取数据绝大多数方式是通过数组,ADO.NET,对象和文件获取的 310 //创建匿名类型的数组 311 var people = new[] 312 { 313 new {FirstName="Mandy",Age=32}, 314 new {FirstName="wuxinlong",Age=18}, 315 new {FirstName="Moto",Age=15}, 316 new {FirstName="Jack",Age=40}, 317 new {FirstName="Marry",Age=22}, 318 }; 319 320 var arrayDataAsXElements = from c in people 321 select 322 new XElement("Person", 323 new XAttribute("Age", c.Age), 324 new XAttribute("FirstName", c.FirstName) 325 ); 326 XElement peopleDoc = new XElement("People", arrayDataAsXElements); 327 peopleDoc.Save("People.xml"); 328 Console.WriteLine(peopleDoc); 329 Console.ReadKey(); 330 #endregion 331 } 332 333 //通过字符串生成XML,对字符串的要求比较严格 334 public static void LinqToXmlOperatorAtString() 335 { 336 string myElement = 337 @"<Car ID=‘3‘> 338 <Color>Bule</Color> 339 <Make>Yugo</Make> 340 </Car>"; 341 XElement newElement = XElement.Parse(myElement); 342 newElement.Save("newElement.xml"); 343 Console.WriteLine(newElement); 344 Console.ReadKey(); 345 } 346 347 private static void PrintAttributes(XElement rootElement) 348 { 349 Console.WriteLine(rootElement.Name + "元素的属性:"); 350 foreach (XAttribute attr in rootElement.Attributes()) 351 { 352 Console.WriteLine(attr.Name + " " + attr.Value); 353 } 354 } 355 } 356 357 public class Person 358 { 359 public string Name { get; set; } 360 public int Age { get; set; } 361 public string Email { get; set; } 362 } 363 364 //创建一个对象,用来进行序列化操作 365 //注意xml序列化只能序列化公共字段和属性 366 //而且对象也必须是公共类型 367 public class PersonClass 368 { 369 public string Name { get; set; } 370 public int Age { get; set; } 371 public string Email { get; set; } 372 public void SayHi() 373 { 374 Console.WriteLine("Hi,MyName is:{0}",Name); 375 } 376 public void SayHello() 377 { 378 Console.WriteLine("Hello"); 379 } 380 } 381 }
标签:c# 字符串 .text car 方便 led 返回 long eval
原文地址:http://www.cnblogs.com/Derrickwu/p/7249214.html