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 ;
}
}
}
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 ;
}
}
}
select * from tablex for xml auto|raw
就废弃不用了,不过一只觉得这段代码还是有参考价值的,cc
上面是一个类。一个构造函数,两个方法。
构造函数实例化XMLDOM先。
两个方法:
public string GetXMLString(int boardId)
void AppendNode(string parentId,string boardId,string boardName,string logo)
GetXMLString(boardId)调用数据层方法,从数据库中得到数据,每条记录调用一次AppendNode()插入新节点。
AppendNode()根据参数parentId判断应该插入的位置。然后插入节点。
能再说清楚一点吗?用XMLDOM如何做啊?如何生成一个由自己定义的文件名的XML。请赐教。