Xml基础
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.IO;
namespace Comp.WEB.Xml
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
//创建
protected void btn_Click(object sender, EventArgs e)
{
#region 创建
//<?xml version="1.0" encoding="utf-8"?>
// <Books>
// <Book>
// <Name>红楼梦</Name>
// <Price />
// </Book>
// </Books>
// //xml 文档
// XmlDocument doc = new XmlDocument();
// //创建文档声明节点
// XmlDeclaration xmlDec= doc.CreateXmlDeclaration("1.0", "utf-8", null);
// doc.AppendChild(xmlDec);
// //创建根节点
// XmlElement parent = doc.CreateElement("Books");
// doc.AppendChild(parent);
// //Books/Book
// XmlElement book1 = doc.CreateElement("Book");
// parent.AppendChild(book1);
// //Book/Name
// XmlElement name = doc.CreateElement("Name");
// name.InnerText = "红楼梦";
//book1.AppendChild(name);
// //Book/Price
// XmlElement prizr=doc.CreateElement("Price");
// prizr.InnerText = "10";
// book1.AppendChild(prizr);
// doc.Save("c:\\1.xml");
//补充
//XmlElement book1 = doc.CreateElement("Book");
//book1.InnerText = "<Name>红楼梦</Name><Prize>10</Prize>"; 不会转义
//book1.InnerXml = "<Name>红楼梦</Name><Prize>10</Prize>";自动转义
#endregion
//创建
XmlDocument doc = new XmlDocument();
string path = "c:\\1.xml";
if (!File.Exists(path))
{
//创建声明
XmlDeclaration xmlDec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
//添加声明
doc.AppendChild(xmlDec);
//创建BOOKS 节点
XmlElement parent = doc.CreateElement("Books");
//添加Books节点
doc.AppendChild(parent);
//添加Books/Book下面的节点
XmlElement book1 = doc.CreateElement("Book");
parent.AppendChild(book1);
XmlElement name = doc.CreateElement("Name");
name.InnerText = "红楼梦";
book1.AppendChild(name);
XmlElement Price = doc.CreateElement("Price");
Price.InnerText = "10";
book1.AppendChild(Price);
}
else
{
//更新
//加载已经存在的xml文件
doc.Load(path);
// //获取books节点 根节点
XmlElement parent = doc.DocumentElement;
// //创建Book
XmlElement book1 = doc.CreateElement("Book");
//添加BOOk节点
parent.AppendChild(book1);
//添加Name 节点
XmlElement name = doc.CreateElement("Name");
name.InnerText = "西游记";
book1.AppendChild(name);
XmlElement price = doc.CreateElement("Price");
price.InnerText = "20";
book1.AppendChild(price);
}
doc.Save("c:\\1.xml");
// <?xml version="1.0" encoding="utf-8"?>
//<Books>
// <Book>
// <Name>红楼梦</Name>
// <Price>10</Price>
// </Book>
//</Books>
}
/// <summary>
/// 创建带属性的节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn2_Click(object sender, EventArgs e)
{
//<Order>
// <CustomerName>nl</CustomerName>
// <OrderNumber>BJ200888</OrderNumber>
// <Items>
// <OrderItem Name="电脑" Count="30"/>
// <OrderItem Name="电视" Count="2"/>
// <OrderItem Name="水杯" Count="20"/>
// </Items>
//</Order>
XmlDocument doc = new XmlDocument();
XmlDeclaration xmldec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(xmldec);
//1创建父节点Order
XmlElement ordre = doc.CreateElement("Order");
doc.AppendChild(ordre);
//2创建CustomerName
XmlElement CustomerName = doc.CreateElement("CustomerName");
CustomerName.InnerText = "n1";
ordre.AppendChild(CustomerName);
//3 //创建OrderNumber
XmlElement OrderNumber = doc.CreateElement("OrderNumber");
OrderNumber.InnerText = "BJ200088";
ordre.AppendChild(OrderNumber);
////4创建Items
XmlElement Items = doc.CreateElement("Items");
ordre.AppendChild(Items);
//5//创建OrderItem
XmlElement orderItem1 = doc.CreateElement("OrderItem");
orderItem1.SetAttribute("Name", "电脑");
orderItem1.SetAttribute("Count", "30");
Items.AppendChild(orderItem1);
XmlElement orderItem2 = doc.CreateElement("OrderItem");
orderItem2.SetAttribute("Name", "电视");
orderItem2.SetAttribute("Count", "1");
Items.AppendChild(orderItem2);
doc.Save("c:\\2.xml");
}
/// <summary>
/// 读取xml
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
//<Books> /// <Books>
// <Book>
// <Name>红楼梦</Name>
// <Price>10</Price>
// </Book>
// <Book>
// <Name>西游记</Name>
// <Price>20</Price>
// </Book>
//</Books>
protected void Unnamed1_Click(object sender, EventArgs e)
{
string path = "c:\\1.xml";
XmlDocument doc = new XmlDocument();
doc.Load(path);
//根节点 BOOKs
XmlNode parent = doc.DocumentElement;
XmlNodeList xnl = parent.ChildNodes; ;
foreach (XmlNode node in xnl)
{
//Book
Response.Write(node.ChildNodes[0].InnerText); //后楼梦
Response.Write(node.ChildNodes[1].InnerText); //10
}
}
//读取带属性的xml
protected void t1_Click(object sender, EventArgs e)
{
// <Order>
// <CustomerName>n1</CustomerName>
// <OrderNumber>BJ200088</OrderNumber>
// <Items>
// <OrderItem Name="电脑" Count="30" />
// <OrderItem Name="电视" Count="1" />
// </Items>
//</Order>
//string path = "c:\\2.xml";
//XmlDocument doc = new XmlDocument();
//doc.Load(path);
//父节点 Order
//XmlElement parent = doc.DocumentElement;
//XmlNode items = parent.SelectSingleNode("Items");
//foreach (XmlNode item in items.ChildNodes)
//{
// Response.Write(item.Attributes["Name"].Value);
// Response.Write(item.Attributes["Count"].Value);
//}
//2使用 xpath 方式读取
//string path = "c:\\2.xml";
//XmlDocument doc = new XmlDocument();
//doc.Load(path);
//XmlNodeList xnl = doc.SelectNodes("Order/Items/OrderItem");
//foreach (XmlNode item in xnl)
//{
// Response.Write(item.Attributes[0].Value);
// Response.Write(item.Attributes[2].Value);
//}
// 3 也是使用xpath 但是定位不一样
//string path = "c:\\2.xml";
//XmlDocument doc = new XmlDocument();
//doc.Load(path);
//XmlNode node= doc.SelectSingleNode("Order/Items/OrderItem[@Name=\"电脑\"]");
// Response.Write(node.Attributes[1].Value); //30
// //node.Attributes["Count"] = 40;
// //doc.Save(path);
//更新 30
//4
// string path = "c:\\2.xml";
// XmlDocument doc = new XmlDocument();
// doc.Load(path);
// XmlNode node= doc.SelectSingleNode("Order/Items");
// Response.Write(node.InnerXml);
//// Response.Write(node.InnerText);
// 操作xml文件
// XmlDocument
// Save()
// Load()
// SelectSingleNode() 根据xpath找某个节点
// SelectNodes()
// DocumentElement 根节点
// XmlNode
// XmlElement
// SetAttribute(); 设置属性
// Attributes[].Value 读取属性
// InnerText
// InnerXml
// ChildNodes
//委托:类型安全的指向函数的指针
//使用步骤
// 1:声明一个委托 delegate string DelString(string s) 2:定义一个委托变量
// DelString del = new DelString(ToUpper)
// DelString del = ToUpper
// 3:使用委托
// del(s);
}
}
}