如何根据数据库查出的内容,用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>

解决方案 »

  1.   

    利用dataset的writexml,例如:DataSet ds = new DataSet();
                ds.WriteXml(Server.MapPath("~/xml/your.xml"));
      

  2.   

    可不可以说清楚点呀?俺是菜鸟。就要生成这种特点格式的xml文档。
      

  3.   

    把读出的数据存储到DATATABLE中.然后把DATATABLE写到XML 文档 ds.WriteXml(Server.MapPath("~/xml/your.xml"));
      

  4.   


    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文件的位置这样大概能出来了。
      

  5.   

    writeXMLbyXMLwriter(myxmlwriter, "asf", 740.1, 5.0, 456789);上面这句代码是之前我随便搞的,
    你可以把writeXMLbyXMLwriter这个函数改下,随便改下,static void writeXMLbyXMLwriter(XmlWriter writer)也行,
      

  6.   

    读写操作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;  
      

  7.   


    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();