向各位请教一下,如何动态生成xml文件?如果可以的话,麻烦把代码贴出来,谢谢了!
解决方案 »
- 大侠们帮我看看这段代码(关于lock()的)
- 大家好!请问可以在XP系统下装 .NET 软件吗?
- 在线请教各位一个有关取字符串的问题?请大家指教
- 求 DataList 分页效果 有的指导下
- asp.net 控件开发 嵌入JS脚本
- 如何获取自定控件中,包含的控件值?
- scrolling这个属性好奇怪,高手请进
- 如何把datagrid中,显示日期型字段的那些列中所有后面的时间去掉,只显示年月日 ??
- 关于安装WebMatrix的问题
- dataset的delete方法怎么老提示我在位置0处没有任何行?
- 谈谈asp.net cookie注入和跨站攻击和防范(一年没上CSDN)
- sqldatareader 取值问题
简单点:拼接或模板的替换,这和拼接SQL一样,你想怎么弄就怎么弄。
复杂的,你可以使用
XmlDocument,然后在各个node上通过AppendChild这样的方式来操作。
static void Main(string[] args)
{ XmlDocument doc = new XmlDocument();
var node = doc.CreateElement("Books");
doc.AppendChild(node); for (int i = 0; i < 10; i++)
{
var n = doc.CreateElement("Book");
node.AppendChild(n);
} doc.Save(@"E:\desktop\test.xml");
}这段代码,先生成一个文档对象,然后写入了Books文档根对象,然后循环10次写入了Book对象,你想要动态,这里就可以了。
StringBuilder sb = new StringBuilder();
sb.Append(@"<?xml version=""1.0"" encoding=""UTF-8""?>");
sb.Append(Environment.NewLine);
sb.Append("<Classes>");
sb.Append(Environment.NewLine);。。
也可以用 XmlTextWriter 写:
xtw.WriteStartElement("C"); xtw.WriteAttributeString("ClassID", dr[i]["cID"].ToString());
xtw.WriteAttributeString("Name", dr[i]["cName"].ToString());
xtw.WriteEndElement();
这是一些部分代码,你看下吧!
using System.IO;/// <summary>
/// XMLProc 的摘要说明
/// 将数据写入XML文件的方法
/// SaveXML_DataSet()利用DataSet写入XML文件
/// SaveXML_XmlTextWriter()利用XmlTextWriter写入XML文件
/// SaveXML_XmlNode()利用XmlNode写入XML文件
///
/// 从XML文件中读取数据
/// GetXML_XmlTextReader()
/// GetXML_XmlNodeReader()
/// </summary>
public class XMLProc
{
public XMLProc()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
///<summary>
/// 利用XmlTextWriter不容易实现追加,也就是说每次写入XML文档的数据都是覆盖式的,不容易实现在原有数据的基础上追加数据,
/// 而采用XmlNode模式就能方便地实现数据追加
/// 利用DataSet也不是追加数据
///</summary>
//利用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"));
dt.Columns.Add("qq", Type.GetType("System.String"));
dt.Columns.Add("msn", Type.GetType("System.String"));
dt.Columns.Add("cellphone", Type.GetType("System.String"));
dt.Columns.Add("workplace", Type.GetType("System.String"));
dt.Columns.Add("address", Type.GetType("System.String"));
dt.Columns.Add("email", Type.GetType("System.String")); DataRow dr = dt.NewRow();
dr[0] = pb.name;
dr[1] = pb.telphone;
dr[2] = pb.qq;
dr[3] = pb.msn;
dr[4] = pb.cellphone;
dr[5] = pb.workplace;
dr[6] = pb.address;
dr[7] = pb.email; 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方法写入文件头信息
//例如<?xml version="1.0" encoding="utf-8"?>
textWriter.WriteStartDocument(); //写入根节点<phonebook></phonebook>
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(); textWriter.WriteStartElement("qq", "");
textWriter.WriteString(pb.qq);
textWriter.WriteEndElement(); textWriter.WriteStartElement("msn", "");
textWriter.WriteString(pb.msn);
textWriter.WriteEndElement(); textWriter.WriteStartElement("cellphone", "");
textWriter.WriteString(pb.cellphone);
textWriter.WriteEndElement(); textWriter.WriteStartElement("workplace", "");
textWriter.WriteString(pb.workplace);
textWriter.WriteEndElement(); textWriter.WriteStartElement("address", "");
textWriter.WriteString(pb.address);
textWriter.WriteEndElement(); textWriter.WriteStartElement("email", "");
textWriter.WriteString(pb.email);
textWriter.WriteEndElement(); //写入文档结束,调用WriteEndDocument方法
textWriter.WriteEndDocument(); //关闭textWriter
textWriter.Close(); return "true";
}
catch (Exception ex)
{
return ex.ToString();
}
}
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");
XmlElement qqNode = xdoc.CreateElement("qq");
XmlElement msnNode = xdoc.CreateElement("msn");
XmlElement cellphoneNode = xdoc.CreateElement("cellphone");
XmlElement workplaceNode = xdoc.CreateElement("workplace");
XmlElement addressNode = xdoc.CreateElement("address");
XmlElement emailNode = xdoc.CreateElement("email"); ///获取文本信息
XmlText nameText = xdoc.CreateTextNode(pb.name);
XmlText telphoneText = xdoc.CreateTextNode(pb.telphone);
XmlText qqText = xdoc.CreateTextNode(pb.qq);
XmlText msnText = xdoc.CreateTextNode(pb.msn);
XmlText cellphoneText = xdoc.CreateTextNode(pb.cellphone);
XmlText workplaceText = xdoc.CreateTextNode(pb.workplace);
XmlText addressText = xdoc.CreateTextNode(pb.address);
XmlText emailText = xdoc.CreateTextNode(pb.email); ///将上面的各个存储信息节点添加到menber节点下,但并不包含最终的值
parentNode.AppendChild(nameNode);
parentNode.AppendChild(telphoneNode);
parentNode.AppendChild(qqNode);
parentNode.AppendChild(msnNode);
parentNode.AppendChild(cellphoneNode);
parentNode.AppendChild(workplaceNode);
parentNode.AppendChild(addressNode);
parentNode.AppendChild(emailNode); ///将上面获取的文本信息添加到与之相对应的节点中
nameNode.AppendChild(nameText);
telphoneNode.AppendChild(telphoneText);
qqNode.AppendChild(qqText);
msnNode.AppendChild(msnText);
cellphoneNode.AppendChild(cellphoneText);
workplaceNode.AppendChild(workplaceText);
addressNode.AppendChild(addressText);
emailNode.AppendChild(emailText); ///保存存储信息的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 += "<tr bgColor=#fff5b1><td>" + currentNodeName + "</td><td>" + xmltextreader.Value + "</td></tr>";
}
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member"))
{
outMsg += "<tr><td>联系人:</td><td><font color=red>(" + (i++) + ")</font></td></tr>";
}
}
outMsg = "<table>" + outMsg + "</table>";
//关闭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 = "<table><tr><td collspan=2><font color=red>已经查找到下列联系人:</font></td></tr>";
string currentNodeName = "";
//利用xmltextreader对象的Read()方法自我表现读取文件的节点
while (xmltextreader.Read())
{
//当找到了要查找的人,并且当前节点为元素,并且节点名称为"member"时退出循环
if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Element && xmltextreader.LocalName.Equals("member"))
{
break;
}
//当节点类型是元素的时候,记录该节点名称
if (xmltextreader.NodeType == System.Xml.XmlNodeType.Element)
{
currentNodeName = xmltextreader.LocalName.ToString();
}
//还没有查找到指定的人,并且当前节点类型为文本,并且当前节点的节点值与要查找的人符合时
if ((findflag == false) && (xmltextreader.NodeType == System.Xml.XmlNodeType.Text) && (xmltextreader.Value == keyName))//当为文本类型同时对应的值为要查找的人的时候
{
findflag = true;//设置找到了要查找的人的标志
}
//如果已经找到,并且当前节点类型为文本时,循环记录这个人的所有信息
if (findflag == true && xmltextreader.NodeType == System.Xml.XmlNodeType.Text)
{
outMsg += "<tr bgcolor=#fff5b1><td align=right>" + currentNodeName + ":</td><td>" + xmltextreader.Value + "</td></tr>";
}
//如果已经找到了这个人,同时Xtr当前为文本类型,那么
}
//关闭xmltextreader
xmltextreader.Close();
outMsg += "</table>"; //显示查找的人的详细信息
//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 "";
}
}