2014年4月9日 星期三

[linq] LINQ To XML Part2


  1. var bench = new XElement("bench",
  2.                 new XElement("toolbox",
  3.                     new XElement("handtool", "Hammer"),
  4.                     new XElement("handtool", "Rasp")
  5.                     ),
  6.                 new XElement("toolboox",
  7.                     new XElement("handtool", "Saw"),
  8.                     new XElement("powertool", "Nailgun")
  9.                     ),
  10.                 new XComment("Be carrful with the nail gun")
  11.                 );
  12.  
  13.             foreach (XNode Node in bench.Nodes())
  14.             {
  15.                 Console.WriteLine(Node.ToString(SaveOptions.DisableFormatting) + ".");
  16.             }
  17.  
  18.             //訪問返回型態為xElement子節點
  19.             foreach (XElement e in bench.Elements())
  20.             {
  21.                 Console.WriteLine(e.Name + "=" + e.Value);
  22.             }
  23.  
  24.             //LINQ 查詢Nailgun
  25.             IEnumerable<string> query =
  26.                 from toolbox in bench.Elements()
  27.                 where toolbox.Elements().Any(tool => tool.Value == "Nailgun")
  28.                 select toolbox.Value;
  29.  
  30.             foreach (string e in query)
  31.             {
  32.                 Console.WriteLine(e);
  33.             }
  34.  
  35.             //將bench節點值直接設定成test
  36.             bench.SetValue("test");
  37.             Console.WriteLine(bench.ToString());
  38.  
  39.             //將第一個Node取代為XComment
  40.             XElement items = XElement.Parse("<items><one/><two/><three/></items>");
  41.             items.FirstNode.ReplaceWith(new XComment("One was here"));
  42.             Console.WriteLine(items.ToString(SaveOptions.DisableFormatting));
  43.  
  44.             #endregion
  45.  
  46.             #region xml practice
  47.  
  48.             //CURD XML
  49.             XElement xmls = XElement.Load("../../XML.xml");
  50.             Console.WriteLine(xmls.ToString());
  51.  
  52.             if (xmls.Element("name") != null)
  53.             {
  54.                 xmls.Element("name").Value = "Andy";
  55.             }
  56.             Console.WriteLine(xmls.ToString());
  57.  
  58.             //移除Andy
  59.             xmls.Elements().Where(e => e.Value == "Andy")
  60.                             .Remove();
  61.             Console.WriteLine(xmls.ToString());
  62.  
  63.             //移除phone
  64.             xmls.Elements().Where(e => e.Name == "phone")
  65.                 .Remove();
  66.             Console.WriteLine(xmls.ToString());

沒有留言:

張貼留言