简单的XML问题!

homekkk 2009-04-16 10:47:40
如何根据数据库查出的内容,用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>
...全文
77 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
homekkk 2009-04-17
  • 打赏
  • 举报
回复
Thank you 各位!!!
hnjhjzyyxgs 2009-04-16
  • 打赏
  • 举报
回复
把读出的数据存储到DATATABLE中.然后把DATATABLE写到XML 文档 ds.WriteXml(Server.MapPath("~/xml/your.xml"));
homekkk 2009-04-16
  • 打赏
  • 举报
回复
可不可以说清楚点呀?俺是菜鸟。就要生成这种特点格式的xml文档。
人生就是赌 2009-04-16
  • 打赏
  • 举报
回复
利用dataset的writexml,例如:

DataSet ds = new DataSet();
ds.WriteXml(Server.MapPath("~/xml/your.xml"));
kkun_3yue3 2009-04-16
  • 打赏
  • 举报
回复
XmlDocument

hanbb1982 2009-04-16
  • 打赏
  • 举报
回复

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();
itliyi 2009-04-16
  • 打赏
  • 举报
回复
读写操作xml
//实例化文档对象 版本信息 根元素
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;
useforlearn 2009-04-16
  • 打赏
  • 举报
回复
writeXMLbyXMLwriter(myxmlwriter, "asf", 740.1, 5.0, 456789);

上面这句代码是之前我随便搞的,
你可以把writeXMLbyXMLwriter这个函数改下,随便改下,static void writeXMLbyXMLwriter(XmlWriter writer)也行,
useforlearn 2009-04-16
  • 打赏
  • 举报
回复

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文件的位置

这样大概能出来了。
homekkk 2009-04-16
  • 打赏
  • 举报
回复
问题是那些节点名字都是规定好的!这样能行么?

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧