![](http://img.e-com-net.com/image/info8/b8d97b5613f94ed2ba791cad57d0b2ed.gif)
![](http://img.e-com-net.com/image/info8/2f88dd3f1cd145f59c0e47b51acdbd4b.gif)
using
System.Xml;
using System.IO;
///
/// XMLProc 的摘要说明
/// 将数据写入XML文件的方法
/// SaveXML_DataSet()利用DataSet写入XML文件
/// SaveXML_XmlTextWriter()利用XmlTextWriter写入XML文件
/// SaveXML_XmlNode()利用XmlNode写入XML文件
///
/// 从XML文件中读取数据
/// GetXML_XmlTextReader()
/// GetXML_XmlNodeReader()
///
public class XMLProc
{
public XMLProc()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///
/// 利用XmlTextWriter不容易实现追加,也就是说每次写入XML文档的数据都是覆盖式的,不容易实现在原有数据的基础上追加数据,
/// 而采用XmlNode模式就能方便地实现数据追加
/// 利用DataSet也不是追加数据
///
// 利用DataSet把数据写入XML文件,不实现追加
public static string SaveXML_DataSet(BaseInfo.Phonebook pb)
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add( " name " , Type.GetType( " System.String " ));
dt.Columns.Add( " telphone " , Type.GetType( " System.String " ));
……
DataRow dr = dt.NewRow();
dr[ 0 ] = pb.name;
dr[ 1 ] = pb.telphone;
……
dt.Rows.Add(dr);
System.Data.DataSet ds = new DataSet();
ds.Tables.Add(dt);
// 将DataSet里面的数据写入XML
ds.WriteXml(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// 利用xmlTextWriter往XML文件写入数据,没有实现追加
public static string SaveXMLData_XmlTextWriter(BaseInfo.Phonebook pb)
{
try
{
// 创建一个XmlTextWriter类的实例对象
System.IO.FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
// if (!file.Exists)
XmlTextWriter textWriter = new XmlTextWriter(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ), System.Text.Encoding.UTF8);
// 开始写过程,调用WriterStartDocument方法写入文件头信息
// 例如
textWriter.WriteStartDocument();
// 写入根节点
textWriter.WriteStartElement( " phonebook " );
textWriter.WriteStartElement( " member " );
// 写入节点name
textWriter.WriteStartElement( " name " , "" );
// 为name节点写入用户输入的值
textWriter.WriteString(pb.name);
// 写入name节点的结束符
textWriter.WriteEndElement();
textWriter.WriteStartElement( " telphone " , "" );
textWriter.WriteString(pb.telphone);
textWriter.WriteEndElement();
……
// 写入文档结束,调用WriteEndDocument方法
textWriter.WriteEndDocument();
// 关闭textWriter
textWriter.Close();
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// 利用XmlNode往XML文件写入数据,可以实现追加
public static string SaveXMLData_XmlNode(BaseInfo.Phonebook pb)
{
try
{
// 创建一个XmlDocument 对象,用于载入存储信息的XML文件
System.Xml.XmlDocument xdoc = new XmlDocument();
xdoc.Load(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
// 创建一个menber节点并将它添加到根节点下
XmlElement parentNode = xdoc.CreateElement( " member " );
xdoc.DocumentElement.PrependChild(parentNode);
// 创建所有用于存储信息的节点
XmlElement nameNode = xdoc.CreateElement( " name " );
XmlElement telphoneNode = xdoc.CreateElement( " telphone " );
……
/// 获取文本信息
XmlText nameText = xdoc.CreateTextNode(pb.name);
XmlText telphoneText = xdoc.CreateTextNode(pb.telphone);
……
/// 将上面的各个存储信息节点添加到menber节点下,但并不包含最终的值
parentNode.AppendChild(nameNode);
parentNode.AppendChild(telphoneNode);
……
/// 将上面获取的文本信息添加到与之相对应的节点中
nameNode.AppendChild(nameText);
telphoneNode.AppendChild(telphoneText);
……
/// 保存存储信息的XML文件
xdoc.Save(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// XmlTextReader类实现的查找程序
public static string GetXML_XmlTextReader( string keyName)
{
// XMLTextReader读取XML文件
XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
if (keyName == "" )
{
string outMsg = "" ;
string currentNodeName = "" ;
int i = 1 ;
// 利用xmltextreader对象的Read()方法循环读取文件的节点
while (xmltextreader.Read())
{
// 当节点类型是元素的时候,记录该节点名称
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element)
{
currentNodeName = xmltextreader.LocalName.ToString();
}
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Text)
{
// 把这个人的属性组织成文本串,便天页面输出
outMsg += "
"
+
currentNodeName
+
"
"
+
xmltextreader.Value
+
"
"
;
}
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals( " member " ))
{
outMsg += "联系人: (
"
+
(i
++
)
+
"
)
"
;
}
}
outMsg = "
"
+
outMsg
+
"
"
;
// 关闭xmltextreader
xmltextreader.Close();
// 显示联系人的详细信息
// Response.Write(outMsg);
return outMsg;
}
else
{
// XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
bool findflag = false ;
string outMsg = "
"
;
// 显示查找的人的详细信息
// Response.Write(outMsg);
return outMsg;
}
}
// 利用XmlNodeReader实现查找的程序
public static string GetXML_XmlNodeReader( string keyName)
{
XmlDocument xml = new XmlDocument();
bool findNode = false ;
try
{
xml.Load(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
}
catch
{ }
XmlNodeReader read = new XmlNodeReader(xml);
while (read.Read())
{
if (read.NodeType == System.Xml.XmlNodeType.Element && read.LocalName.ToString().Equals(keyName))
{
read.Read();
if (read.NodeType == System.Xml.XmlNodeType.Text)
{
// Response.Write(read.Value);
return read.Value;
// break;
}
}
}
return "" ;
}
}
using System.IO;
///
/// XMLProc 的摘要说明
/// 将数据写入XML文件的方法
/// SaveXML_DataSet()利用DataSet写入XML文件
/// SaveXML_XmlTextWriter()利用XmlTextWriter写入XML文件
/// SaveXML_XmlNode()利用XmlNode写入XML文件
///
/// 从XML文件中读取数据
/// GetXML_XmlTextReader()
/// GetXML_XmlNodeReader()
///
public class XMLProc
{
public XMLProc()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///
/// 利用XmlTextWriter不容易实现追加,也就是说每次写入XML文档的数据都是覆盖式的,不容易实现在原有数据的基础上追加数据,
/// 而采用XmlNode模式就能方便地实现数据追加
/// 利用DataSet也不是追加数据
///
// 利用DataSet把数据写入XML文件,不实现追加
public static string SaveXML_DataSet(BaseInfo.Phonebook pb)
{
try
{
DataTable dt = new DataTable();
dt.Columns.Add( " name " , Type.GetType( " System.String " ));
dt.Columns.Add( " telphone " , Type.GetType( " System.String " ));
……
DataRow dr = dt.NewRow();
dr[ 0 ] = pb.name;
dr[ 1 ] = pb.telphone;
……
dt.Rows.Add(dr);
System.Data.DataSet ds = new DataSet();
ds.Tables.Add(dt);
// 将DataSet里面的数据写入XML
ds.WriteXml(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// 利用xmlTextWriter往XML文件写入数据,没有实现追加
public static string SaveXMLData_XmlTextWriter(BaseInfo.Phonebook pb)
{
try
{
// 创建一个XmlTextWriter类的实例对象
System.IO.FileInfo file = new FileInfo(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
// if (!file.Exists)
XmlTextWriter textWriter = new XmlTextWriter(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ), System.Text.Encoding.UTF8);
// 开始写过程,调用WriterStartDocument方法写入文件头信息
// 例如
textWriter.WriteStartDocument();
// 写入根节点
textWriter.WriteStartElement( " phonebook " );
textWriter.WriteStartElement( " member " );
// 写入节点name
textWriter.WriteStartElement( " name " , "" );
// 为name节点写入用户输入的值
textWriter.WriteString(pb.name);
// 写入name节点的结束符
textWriter.WriteEndElement();
textWriter.WriteStartElement( " telphone " , "" );
textWriter.WriteString(pb.telphone);
textWriter.WriteEndElement();
……
// 写入文档结束,调用WriteEndDocument方法
textWriter.WriteEndDocument();
// 关闭textWriter
textWriter.Close();
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// 利用XmlNode往XML文件写入数据,可以实现追加
public static string SaveXMLData_XmlNode(BaseInfo.Phonebook pb)
{
try
{
// 创建一个XmlDocument 对象,用于载入存储信息的XML文件
System.Xml.XmlDocument xdoc = new XmlDocument();
xdoc.Load(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
// 创建一个menber节点并将它添加到根节点下
XmlElement parentNode = xdoc.CreateElement( " member " );
xdoc.DocumentElement.PrependChild(parentNode);
// 创建所有用于存储信息的节点
XmlElement nameNode = xdoc.CreateElement( " name " );
XmlElement telphoneNode = xdoc.CreateElement( " telphone " );
……
/// 获取文本信息
XmlText nameText = xdoc.CreateTextNode(pb.name);
XmlText telphoneText = xdoc.CreateTextNode(pb.telphone);
……
/// 将上面的各个存储信息节点添加到menber节点下,但并不包含最终的值
parentNode.AppendChild(nameNode);
parentNode.AppendChild(telphoneNode);
……
/// 将上面获取的文本信息添加到与之相对应的节点中
nameNode.AppendChild(nameText);
telphoneNode.AppendChild(telphoneText);
……
/// 保存存储信息的XML文件
xdoc.Save(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
return " true " ;
}
catch (Exception ex)
{
return ex.ToString();
}
}
// XmlTextReader类实现的查找程序
public static string GetXML_XmlTextReader( string keyName)
{
// XMLTextReader读取XML文件
XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
if (keyName == "" )
{
string outMsg = "" ;
string currentNodeName = "" ;
int i = 1 ;
// 利用xmltextreader对象的Read()方法循环读取文件的节点
while (xmltextreader.Read())
{
// 当节点类型是元素的时候,记录该节点名称
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element)
{
currentNodeName = xmltextreader.LocalName.ToString();
}
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Text)
{
// 把这个人的属性组织成文本串,便天页面输出
outMsg += "
}
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals( " member " ))
{
outMsg += "
}
}
outMsg = "
// 关闭xmltextreader
xmltextreader.Close();
// 显示联系人的详细信息
// Response.Write(outMsg);
return outMsg;
}
else
{
// XmlTextReader xmltextreader = new XmlTextReader(System.Web.HttpContext.Current.Server.MapPath("phonebook.xml"));
bool findflag = false ;
string outMsg = "
已经查找到下列联系人: | |
" + currentNodeName + " : | " + xmltextreader.Value + " |
// 显示查找的人的详细信息
// Response.Write(outMsg);
return outMsg;
}
}
// 利用XmlNodeReader实现查找的程序
public static string GetXML_XmlNodeReader( string keyName)
{
XmlDocument xml = new XmlDocument();
bool findNode = false ;
try
{
xml.Load(System.Web.HttpContext.Current.Server.MapPath( " phonebook.xml " ));
}
catch
{ }
XmlNodeReader read = new XmlNodeReader(xml);
while (read.Read())
{
if (read.NodeType == System.Xml.XmlNodeType.Element && read.LocalName.ToString().Equals(keyName))
{
read.Read();
if (read.NodeType == System.Xml.XmlNodeType.Text)
{
// Response.Write(read.Value);
return read.Value;
// break;
}
}
}
return "" ;
}
}