using System;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
namespace BBSTry
{ public class Board
{
private XmlDocument domNav = new XmlDocument();
private XmlNode root; public Board()
{
domNav.LoadXml("<Root id=\"0\"/>");
root = domNav.DocumentElement;
}
public string GetXMLString(int boardId)
{


if(boardId<0)
boardId=0;

SqlParameter[] prams = {DBAdapter.MakeInParam("@SubRootID",SqlDbType.Int, 4, boardId)};
DataSet ds = null;
DBAdapter.RunProc("F_GetBoardTree",prams,out ds);

foreach(DataRow myRow in ds.Tables[0].Rows)
{
AppendNode(myRow["ParentID"].ToString(),myRow["BoardID"].ToString(),
myRow["BoardName"].ToString(),myRow["Logo"].ToString());
}
return domNav.OuterXml;
}
void AppendNode(string parentId,string boardId,string boardName,string logo)
{
if(parentId=="0")
{
XmlElement newE = domNav.CreateElement(null,"Entity",null);
newE.InnerXml = "<Name>"+boardName+"</Name>"
+"<Logo>"+logo+"</Logo>"
+"<Subs/>";
newE.SetAttribute("id",null,"1");
domNav.DocumentElement.AppendChild(newE);
return;
}
else{
XmlNode targNode = domNav.DocumentElement.SelectSingleNode("//*[@id="+parentId+"]");
if(targNode!=null)
{
targNode = targNode.ChildNodes[2];
XmlElement newE = domNav.CreateElement(null,"Entity",null);
newE.InnerXml = "<Name>"+boardName+"</Name>"
+"<Logo>"+logo+"</Logo>"
+"<Subs/>";
newE.SetAttribute("id",null,boardId);
targNode.AppendChild(newE);
return ;
}
}
return ;
}
}
}

解决方案 »

  1.   

    用.net的话,当然用dom啦~ :)上面的代码是我写BBS时写的一段代码,读数据库,生成一个XMLSTRING .后来发现更好用的
     select * from tablex for xml auto|raw
    就废弃不用了,不过一只觉得这段代码还是有参考价值的,cc
      

  2.   

    select * from tablex for xml auto|raw这个用法是什么样子的?
      

  3.   

    还有你那个生成xml文件的程序行在那里。
      

  4.   


    上面是一个类。一个构造函数,两个方法。
    构造函数实例化XMLDOM先。
    两个方法:
    public string GetXMLString(int boardId)
    void AppendNode(string parentId,string boardId,string boardName,string logo)
    GetXMLString(boardId)调用数据层方法,从数据库中得到数据,每条记录调用一次AppendNode()插入新节点。
    AppendNode()根据参数parentId判断应该插入的位置。然后插入节点。
      

  5.   

    http://lucky_elove.www1.dotnetplayground.com/ShowDetail.aspx?id=F3EB8683-DB3C-4460-ADB7-7C5C12348A11利用OleDb对象,将数据库中全部表转换成XML文件
      

  6.   

    stationxp(小磊龙) :
    能再说清楚一点吗?用XMLDOM如何做啊?如何生成一个由自己定义的文件名的XML。请赐教。