ASP.NET中的XML
发布日期:2022-02-05 18:27:40 浏览次数:14 分类:技术文章

本文共 9465 字,大约阅读时间需要 31 分钟。

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="">
  <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="";
   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();
   }
  }

 

转载地址:https://blog.csdn.net/lisong58420/article/details/2302816 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:复合控件的开发
下一篇:领悟 JavaScript 中的面向对象

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月12日 13时47分53秒