XML声明
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<标记 属性名="属性取值"…>数据内容</标记>
DataSet方法
DataSet.ReadXml(string strFileName);
DataSet.WriteXml(string strFileName);
dbGuest.xsd
dbGuest.xml
<?xml version="1.0" standalone="yes"?>
<dbGuest xmlns="http://tempuri.org/dbGuest.xsd">
<User>
<Name>gloomyboyo</Name>
<City>fuzhou</City>
<Email>gloomyboyo@126.com</Email>
<Message>Hello!</Message>
<STime>2006-8-5 10:51:14</STime>
</User>
</dbGuest>
private void btnSubmit_Click(object sender, System.EventArgs e)
{
DataSet ds = new DataSet("myDs");
//从XML中读取数据
ds.ReadXml(Server.MapPath(@"./db/dbGuest.xml"));
//以下为添加记录
DataRow dr = ds.Tables[0].NewRow();
dr["Name"] = tbName.Text.Trim();
dr["City"] = tbCity.Text.Trim();
dr["Email"] = tbEmail.Text.Trim();
dr["Message"] = tbComments.Text.Trim();
dr["STime"] = DateTime.Now.ToString();
ds.Tables[0].Rows.Add(dr);
//写回XML
ds.WriteXml(Server.MapPath(".//db//dbGuest.xml"));
Response.Redirect("view.aspx");
}
private void Page_Load(object sender, System.EventArgs e)
{//显示数据
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(@"./db/dbGuest.xml"));
dgShow.DataSource = ds.Tables[0].DefaultView;
dgShow.DataBind();
}
XMl文件的读写
foreach(XmlNode personElement in root.ChildNodes)
XmlTextWriter的使用
people.xml
<?xml version="1.0" encoding="utf-8" ?>
<PEOPLE>
<PERSON>张三</PERSON>
<PERSON>李四</PERSON>
</PEOPLE>
private void LoadXMLButton_Click(object sender, System.EventArgs e)
{
// 创建XmlDocument类的实例
XmlDocument doc = new XmlDocument();
ArrayList NodeValues = new ArrayList();
// 把people.xml文件读入内存,形成一个DOM结构
doc.Load( Server.MapPath("people.xml") );
XmlNode root = doc.DocumentElement;
foreach( XmlNode personElement in root.ChildNodes )
NodeValues.Add(personElement.FirstChild.Value);
XMLNodeListBox.DataSource = NodeValues;
XMLNodeListBox.DataBind();
}
static void WriteXMLbyXmlWriter(XmlWriter writer, string symbol, double price, double change, long volume)
{
writer.WriteStartElement("Stock");
writer.WriteAttributeString("Symbol", symbol);
writer.WriteElementString("Price", XmlConvert.ToString(price));
writer.WriteElementString("Change", XmlConvert.ToString(change));
writer.WriteElementString("Volume", XmlConvert.ToString(volume));
writer.WriteEndElement();
}
private void CreateXMLFileButton_Click(object sender, System.EventArgs e)
{
// 创建一个表示所要生成的XML文件路径的字符串。如果该路径指向NTFS分区,则需要相关的访问权限。
string filename = XMLFilePathTextBox.Text;
// 创建一个写入XML数据的文件流
System.IO.FileStream myFileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
// 使用文件流对象创建一个XmlTextWriter对象
XmlTextWriter myXmlWriter = new XmlTextWriter(myFileStream, System.Text.Encoding.Unicode);
myXmlWriter.Formatting = Formatting.Indented;
try
{
// 使用WriteXMLbyXmlWriter方法把数据写入XmlTextWriter对象中
WriteXMLbyXmlWriter(myXmlWriter, "MSFT", 74.5, 5.5, 49020000);
// 通过Close方法的调用,XmlTextWriter对象的数据最终写入XML文件
myXmlWriter.Close();
Page.Response.Write("生成XML文档成功!");
}
catch
{
Page.Response.Write("生成XML文档失败!请检查路径是否正确,以及是否有写入权限。");
}
}
Xml的文件操作
XmlDocument的使用:
.Load
.SelectSingleNode
.CreateElement
.Save
dbGuest.xml
<?xml version="1.0" standalone="yes"?>
<dbGuest>
<User>
</User>
<User>
<Name>gloomyboyo</Name>
<City>fuzhou</City>
<Email>gloomyboyo@126.com</Email>
</User>
</dbGuest>
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
Bind();
}
private void Bind()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(".//db//dbGuest.xml"));
dgShow.DataSource = ds.Tables[0].DefaultView;
dgShow.DataBind();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(".//db//dbGuest.xml"));
XmlNodeList elemList = doc.GetElementsByTagName("Name");
ddlName.Items.Clear();
for(int i=0;i<elemList.Count;i++)
ddlName.Items.Add(elemList[i].InnerXml);
}
private void btnQuery_Click(object sender, System.EventArgs e)
{//查询
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(".//db//dbGuest.xml"));
lbEmail.Text = doc.SelectSingleNode("//User[Name='"+ddlName.SelectedItem.Text+"']").ChildNodes.Item(2).InnerText;
}
private void btnDelete_Click(object sender, System.EventArgs e)
{//删除
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".//db//dbGuest.xml"));
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList node = xe.GetElementsByTagName("Name");
if(node.Count>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
xe.RemoveAll();//删除该节点的全部内容
break;
}
}
xmlDoc.Save(Server.MapPath(".//db//dbGuest.xml"));
Bind();
}
private void btnAdd_Click(object sender, System.EventArgs e)
{//添加
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".//db//dbGuest.xml"));
XmlNode root=xmlDoc.SelectSingleNode("dbGuest");//查找<dbGuest>
XmlElement xe1=xmlDoc.CreateElement("User");//创建一个<User>节点
XmlElement xesub1=xmlDoc.CreateElement("Name");
xesub1.InnerText="Guset";//设置文本节点
xe1.AppendChild(xesub1);//添加到<User>节点中
XmlElement xesub2=xmlDoc.CreateElement("City");
xesub2.InnerText="上海";
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("Email");
xesub3.InnerText="ss@22.net";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);//添加到<dbGuest>节点中
xmlDoc.Save(Server.MapPath(".//db//dbGuest.xml"));
Bind();
}
private void btnChange_Click(object sender, System.EventArgs e)
{//查询
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath(".//db//dbGuest.xml"));
XmlNodeList nodeList=xmlDoc.SelectSingleNode("dbGuest").ChildNodes;//获取dbGuest节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
XmlNodeList node = xe.GetElementsByTagName("Name");
if(node.Count>0)
{
if(node[0].InnerText==ddlName.SelectedItem.Text)
{
XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="Email")//如果找到
{
xe2.InnerText=tbNewMail.Text;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
}
xmlDoc.Save(Server.MapPath(".//db//dbGuest.xml"));
Bind();
}
XMl文件验证
private void Page_Load(object sender, System.EventArgs e)
{
FileStream stream = new FileStream(Server.MapPath("people.xml"), FileMode.Open);
//创建XmlValidatingReader类的对象
XmlValidatingReader vr = new XmlValidatingReader(stream, XmlNodeType.Element, null);
//加载XML架构文档
vr.Schemas.Add(null, Server.MapPath("people.xsd"));
//说明验证的方式是根据XML架构
vr.ValidationType = ValidationType.Schema;
vr.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);
//对文档进行验证
while(vr.Read());
//显示验证过程完成
Page.Response.Write("<b>Validation finished!<b>");
//关闭打开的文件
stream.Close();
}
private void ValidationHandler(object sender, ValidationEventArgs args)
{
//显示验证失败的消息
Page.Response.Write("<b>Validation error: </b>" + args.Message + "<p>");
}
Xml传送图片
XmlDocument类的使用
Byte[] bt=new Byte[size];
String strData;
把字节组转换为字符串:
-String str=Convert.ToBase64String(bt);
把字符串转换为字符串
-bt=Convert.FromBase64String(strData);
private void btnUpload_Click(object sender, System.EventArgs e)
{
//得到用户要上传的文件名
string strFilePathName = loFile.PostedFile.FileName;
string strFileName = Path.GetFileName(strFilePathName);
int FileLength = loFile.PostedFile.ContentLength;
if(FileLength<=0)
return;
try
{
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
Stream StreamObject = loFile.PostedFile.InputStream; //建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);
string fileName = Server.MapPath(".//WriteXml.xml"); //要打开的文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNode root=xmlDoc.SelectSingleNode("dbImage");//查找<dbGuest>
XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
int nIndex = xnl.Count;
//以下添加新结点
XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
XmlElement xesub1=xmlDoc.CreateElement("ImageID");
xesub1.InnerText=nIndex.ToString();//设置文本节点
xe1.AppendChild(xesub1);//添加到<User>节点中
XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
xesub2.InnerText=loFile.PostedFile.ContentType;
xe1.AppendChild(xesub2);
XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
xesub3.InnerText=FileLength.ToString();
xe1.AppendChild(xesub3);
XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
xesub4.InnerText=tbDescription.Text;
xe1.AppendChild(xesub4);
XmlElement xesub5=xmlDoc.CreateElement("ImageData");
xesub5.InnerText= Convert.ToBase64String(FileByteArray);
xe1.AppendChild(xesub5);
root.AppendChild(xe1);//添加到<dbGuest>节点中
xmlDoc.Save(fileName);
Response.Redirect("ShowAllImg.aspx");
}
catch
{
}
}
private void Page_Load(object sender, System.EventArgs e)
{
string fileName = Server.MapPath("./WriteXml.xml"); //要打开的文件
DataSet ds = new DataSet();
ds.ReadXml(fileName);
dgShow.DataSource = ds.Tables["image"].DefaultView;
dgShow.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
int ImgID = Convert.ToInt32(Request.QueryString["ID"]); //ID为图片ID
//建立数据库链接
string fileName = Server.MapPath(".//WriteXml.xml"); //要打开的文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList node = xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
if(node!=null)
{
string strType = node.Item(1).InnerText;
string strData =node.Item(4).InnerText;
int nSize = int.Parse(node.Item(2).InnerText);
Response.ContentType = strType;//设定输出文件类型
//输出图象文件二进制数制
Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize);
Response.End();
//也可以保存为图像
// FileStream fs = new FileStream(@"C:/aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
// fs.Write((Convert.FromBase64String(strData), 0,nSize);
// fs.Close();
}
}