如何根据数据库查出的内容,用asp.net生成以下格式的xml文件(是用程序生成哦,个数是根据查询出来的个数):
<artworkinfo>
<albuminfo>
<artLocation>images/album1.jpg</artLocation>
<artist>The Doors</artist>
<albumName>Greatest Hits</albumName>
<artistLink>http://www.zcool.com.cn</artistLink>
<albumLink>http://www.zcool.com.cn</albumLink>
</albuminfo> <albuminfo>
<artLocation>images/album2.jpg</artLocation>
<artist>The White Stripes</artist>
<albumName>Elephant</albumName>
<artistLink>http://www.zcool.com.cn</artistLink>
<albumLink>http://www.zcool.com.cn</albumLink>
</albuminfo>
</artworkinfo>
<artworkinfo>
<albuminfo>
<artLocation>images/album1.jpg</artLocation>
<artist>The Doors</artist>
<albumName>Greatest Hits</albumName>
<artistLink>http://www.zcool.com.cn</artistLink>
<albumLink>http://www.zcool.com.cn</albumLink>
</albuminfo> <albuminfo>
<artLocation>images/album2.jpg</artLocation>
<artist>The White Stripes</artist>
<albumName>Elephant</albumName>
<artistLink>http://www.zcool.com.cn</artistLink>
<albumLink>http://www.zcool.com.cn</albumLink>
</albuminfo>
</artworkinfo>
ds.WriteXml(Server.MapPath("~/xml/your.xml"));
static void writeXMLbyXMLwriter(XmlWriter writer, string symbol, double price, double change, long volume)
{
writer.WriteStartDocument();
writer.WriteStartElement("artworkinfo"); writer.WriteStartElement("albuminfo");
writer.WriteElementString("artLocation", "images/album2.jpg");
writer.WriteElementString("artist", "The Doors");
writer.WriteElementString("albumName", "Greatest Hits");
writer.WriteElementString("artistLink", "http://www.zcool.com.cn");
writer.WriteElementString("albumLink", "http://www.zcool.com.cn");
writer.WriteEndElement(); writer.WriteStartElement("albuminfo");
writer.WriteElementString("artLocation", "images/album1.jpg");
writer.WriteElementString("artist", "The White Stripes");
writer.WriteElementString("albumName", "Elephant");
writer.WriteElementString("artistLink", "http://www.zcool.com.cn");
writer.WriteElementString("albumLink", "http://www.zcool.com.cn");
writer.WriteEndElement(); writer.WriteEndElement();
writer.WriteEndDocument();
} protected void Button3_Click(object sender, EventArgs e)
{
string filename = TextBox5.Text;
System.IO.FileStream myfilestream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
XmlTextWriter myxmlwriter = new XmlTextWriter(myfilestream, System.Text.Encoding.Unicode); myxmlwriter.Formatting = Formatting.Indented;
try
{
writeXMLbyXMLwriter(myxmlwriter, "asf", 740.1, 5.0, 456789);
myxmlwriter.Close();
Page.Response.Write("成功!");
}
catch
{
Page.Response.Write("失败!");
}
}
这里TextBox5.Text是XML文件的位置这样大概能出来了。
你可以把writeXMLbyXMLwriter这个函数改下,随便改下,static void writeXMLbyXMLwriter(XmlWriter writer)也行,
//实例化文档对象 版本信息 根元素
XmlDocument xml = new XmlDocument();
XmlDeclaration xel = xml.CreateXmlDeclaration("1.0", "utf-8", null);
xml.InsertBefore(xel, xml.DocumentElement);//版本信息放入跟元素前面
XmlElement root = xml.CreateElement("T"); //实例化一级子节点
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
XmlElement t =xml.CreateElement("TT");
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
XmlElement tt =xml.CreateElement(ds.Tables[0].Columns.ToString());
tt.InnerText = ds.Tables[0].Rows.ToString();
t.AppendChild(tt);
}
root.AppendChild(t);
}
xml.AppendChild(root);
xml.Save(Path.Combine(Application.StartupPath, "xxxx.xml"));
MessageBox.Show("OK"); tt.InnerText = ds.Tables[0].Rows.ToString();
读取
//定义对象
XmlDocument xml = new XmlDocument();
xml.Load(Path.Combine(Application.StartupPath, "xxx.xml"));
XmlNodeList xn = xml.SelectNodes("T/TT");
DataTable xmltable = new DataTable();
//定义表标题
foreach (XmlNode x in xn)
{
foreach (XmlNode xx in x.ChildNodes)
{
DataColumn col = new DataColumn(xx.Name.ToString());
xmltable.Columns.Add(col);
}
break;
}
foreach (XmlNode x in xn)
{
DataRow dr = xmltable.NewRow();
for (int i = 0; i < x.ChildNodes.Count; i++)
{
XmlNode xx = x.SelectSingleNode(xmltable.Columns.ToString());
dr = xx.InnerText;
}
xmltable.Rows.Add(dr);
}
//得到对应节点
dataGridView1.DataSource = xmltable;
ds=....
// 创建XmlTextWriter类的实例对象
string xmlPath = Server.MapPath(path);//Server.MapPath("../uploads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xml");
// Response.Write(xmlPath);
XmlTextWriter textWriter = new XmlTextWriter(xmlPath, null);
textWriter.Formatting = Formatting.Indented; textWriter.WriteStartDocument(); textWriter.WriteStartElement("artworkinfo");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
//textWriter. textWriter.WriteStartElement("albuminfo"); for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
textWriter.WriteElementString(ds.Tables[0].Columns[j].ColumnName, ds.Tables[0].Rows[i][j].ToString());
}
textWriter.WriteEndElement();
}
textWriter.WriteEndElement();
// 写文档结束,调用WriteEndDocument方法
textWriter.WriteEndDocument();
// 关闭textWriter
textWriter.Close();