ASPNET和XML之间的关系
1 XML和DataSet之间的操作,利用DataSet直接读取(写入)XML中的文件
1)DataSet.ReadXml(string strFileName)
2) DataSet.WriteXml(string strFileName,string name,string pwd)
写入
priavte void WriteXml(string strFileName)
{
DataSet ds=new DataSet("stu");
ds.ReadXml(strFileName);
//添加记录
DataRow dr=new ds.Tables["0"].NewRow();
dr["Name"]=name;
dr["pwd"]=pwd;
ds.Tables[0].Rows.Add(dr);
ds.WriteXml(strFileName);
}
读出
priavte void ReadXml(string strFileName,DataGrid dgrid)
{
DataSet ds=new DataSet();
ds.ReadXml(strFileName);
dgrid.DataSource=ds.Tables["0"].DefaultView;
dgrid.DataBind();
}
2 直接使用XML读取或写入文件
foreach(XmlNode element in root.ChildNodes)
XmlTextWriter
使用的空间: using System.Xml
1)读取XMl
priavte void ReadXml(string strFileName,ListBoc listbox)
{
XmlDocument doc=new XmlDocument();
doc.Load(strFileName);
XmlNode root=doc.DocumentElement;
ArrayList aryList=new ArrayList();
foreach(XmlNode element in root.ChildNodes)
aryList.Add(element.FirstChild.Value);
listbox.DataSource=aryList;
listbox.Dataind();
}
2)写入XML
priavte void WriteXml(string strFileName)
{
//创建XML文件流
FileStream fileStream=new FileStream(strFileName,FileMode.Create);
//使用文件流对象创建XmlTextWriter
XmlTextWriter xmlWriter = new XmlTextWriter(fileStream,System.Text.encoding.Unicode);
xmlWriter.Formatting=Formatting.Indented;
try
{
//调用方法
XmlWrite(xmlWriter,"MSFT","kevin","12345");
xmlWrite.Close();
}
catch
{
......
}
}
priavte void XmlWrite(XmlWriter writer,sting symbol,string name,string pwd)
{
writer.WriteStartElement("Stock");
writer.WriteAttributeString("Symbol",symbol);
writer.WriteElementString("name",XmlConvert.ToString(name));
writer.WriteElementString("pwd",XmlConvert.ToString(pwd));
writer.WriteendElement();
}
3 对XML中文件元素的操作
Laod
SelectSingleNode
CreateElement
Save
1)Add
private void AddXml(string fileName)
{
XmlDocument doc=new XmlDocument();
doc.Load(fileName);
XmlNode root=doc.SelectSingleNode("Users");
XmlElement xe1=doc.CreateElement("user");
XmlElement xesub1=doc.CreateElement("name");
xesub1.InnerText="Kevin";
xe1.AppendChild("xesub1");
root.AppendChild(xe1);
doc.Save(fileName);
}
2)DEL
priavte void DelXml(string filename,string name)
{
XmlDocument doc=new XmlDocument();
doc.Load(filename);
XmlNodeList xnl=doc.SelectSingleNode("Users").ChildNodes;
foreach(XmlNode xn in xnl)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList node = xe.GetElementByTagName("name");
if(node.Count>0)
{
if(node[0].InnerText==name)
xe.RemoveAll();
break;
}
}
doc.Save(fileName);
}
3)Update
private void UpdateXml(string filename,string oldname,string newpwd)
{
XmlDocument doc=new XmlDocument();
doc.Load(filename);
XmlNodeList nodelist=doc.SelectSingleNode("Users").ChildNodes;
foreach(XmlNode xn in nodelist)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList node = xe.GetElementByTagName("name");
if(node.Counr>0)
{
if(node[0].InnerText==oldname)
{
XmlNodeList nls=xe.ChildNodes;
foreach(XmlNode xn1 in nls)
{
XmlElement xe2=(XmlElement)xn1;
if(xe2.Name=="pwd")
{
xe2.InnerText=newpwd;
break;
}
}
}
}
}
doc.Save(filename);
}
5 验证XML文件的正确性
private void VilidateXml(string filename,string vrxml)
{
FileStream stream=new FileStream(filename,Fileode.Open);
//创建验证的类
XmlValidatingReader vr=new XmlValidatingReader(stream,XmlNodeType.Element,null);
//加载验证框架
vr.Schemas.Add(null,vrxml);
//说明验证的方式是根据XML构架
vr.ValidationType=ValidationType.Schema;
vr.ValidationEventHandler+=new ValidationEventHandler(ValidationHandler);
//对文档验证
while(vr.Read())
stream.Close();
}
priavte void ValidationHandler(object sender,ValidationEventArgs args)
{
Response.Write("OK");
}