从数据库中返回xml数据,主流的dbms都有api提供,如sqlserver的openxml,for xml,oracle的xmlquery等,也提供了xml数据格式控制的语法,具体可以参考api的语法说明
如果你的应用对xml格式的要求比较高,如要使用.net的xml序列化,那么可以使用xsl对数据库返回的xml数据做一部格式转换,就可以满足通用性的需求,当然数据大的话性能损失那是相当严重,因此dal的设计就要考虑了
如果你的应用对xml格式的要求比较高,如要使用.net的xml序列化,那么可以使用xsl对数据库返回的xml数据做一部格式转换,就可以满足通用性的需求,当然数据大的话性能损失那是相当严重,因此dal的设计就要考虑了
解决方案 »
- C#里怎样得到自己的网址?
- showModalDialog在IE和FF中关闭窗口刷新父页面的问题
- 关于缺少using指令或者DLL引用的错误
- 使用rdlc报表出现个问题
- .net中的导航菜单不能显示
- 我做了一个简单的数据库操作类,后面两个方法的ConnString传入ConnDB.ConnectionString(),每次都分别建立conn对象
- 我的javascript调用后台方法为什么出错???????????????
- 日文项目,都需要注意那些问题啊?有经验的朋友们来谈谈!!!谢谢啦!
- 这是个啥恶意程序,我已开机他就连接远程下载exe 程序
- .net网站统计在线人数问题
- 关于在命名空间mybookshop中不存在类型或命名空间名称BookInfoDB(是缺少程序及引用吗?)
- 菜鸟的历史遗留问题,,,,,,,,
void CreateProductCategoryXml3()
{
DataSet ds = CreateProductCategoryDataSet();
DataTable dtPro = ds.Tables["Products"];
DataTable dtCat = ds.Tables["Categories"]; string filePath = Server.MapPath(@"..\..\App_Data\ProductCategory3.Xml");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true; using (XmlWriter writer = XmlWriter.Create(filePath, settings)) {
writer.WriteStartElement(ds.DataSetName); //writer.WriteStartElement(dtCat.TableName);
foreach (DataRow catRow in dtCat.Rows) {
writer.WriteStartElement("Category"); writer.WriteStartAttribute(dtCat.Columns[0].ColumnName);
writer.WriteString(catRow[0].ToString()); writer.WriteStartAttribute(dtCat.Columns[1].ColumnName);
writer.WriteString(catRow[1].ToString());
writer.WriteEndAttribute(); //writer.WriteStartElement(dtPro.TableName);
foreach (DataRow proRow in catRow.GetChildRows(ds.Relations[0])) {
writer.WriteStartElement("Product"); writer.WriteStartAttribute(dtPro.Columns[0].ColumnName);
writer.WriteString(proRow[0].ToString()); writer.WriteStartAttribute(dtPro.Columns[1].ColumnName);
writer.WriteString(proRow[1].ToString());
writer.WriteEndAttribute(); writer.WriteEndElement();
}
//writer.WriteEndElement(); writer.WriteEndElement();
}
//writer.WriteEndElement(); writer.WriteEndElement();
}
}// 提供测试数据
public static DataSet CreateProductCategoryDataSet()
{
DataSet ds = new DataSet("ProductCategorySet");
DataTable dtPro = CreateProductTable();
DataTable dtCat = CreateCategoryTable();
ds.Tables.Add(dtPro);
ds.Tables.Add(dtCat);
ds.Relations.Add(dtCat.Columns["CategoryID"], dtPro.Columns["CategoryID"]);
return ds;
} public static DataTable CreateProductTable()
{
DataTable tbl = new DataTable("Products"); tbl.Columns.Add("ProductID", typeof(int));
tbl.Columns.Add("ProductName", typeof(string));
tbl.Columns.Add("CategoryID", typeof(int));
tbl.Columns.Add("DateCreated", typeof(DateTime));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Chai";
row[2] = 1;
row["DateCreated"] = new DateTime(1999, 3, 24);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 2;
row[1] = "Chang";
row[2] = 1;
row[3] = new DateTime(1999, 4, 2);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 3;
row[1] = "Aniseed Syrup";
row[2] = 2;
row[3] = new DateTime(1999, 3, 24);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 4;
row[1] = "Chef Anton's Cajun Seasoning";
row[2] = 2;
row[3] = new DateTime(2000, 12, 12);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 5;
row[1] = "Chef Anton's Gumbo Mix";
row[2] = 2;
row[3] = new DateTime(2000, 12, 25);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 47;
row[1] = "Zaanse koeken";
row[2] = 3;
row[3] = new DateTime(2001, 1, 2);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 48;
row[1] = "Chocolade";
row[2] = 3;
row[3] = new DateTime(2001, 1, 12);
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 49;
row[1] = "Maxilaku";
row[2] = 3;
row[3] = new DateTime(2001, 8, 12);
tbl.Rows.Add(row); return tbl;
} public static DataTable CreateCategoryTable()
{
DataTable tbl = new DataTable("Categories"); tbl.Columns.Add("CategoryID", typeof(int));
tbl.Columns.Add("CategoryName", typeof(string));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Beverages";
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 2;
row[1] = "Condiments";
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 3;
row[1] = "Confections";
tbl.Rows.Add(row); return tbl;
}4.
结果示例<?xml version="1.0" encoding="utf-8"?>
<ProductCategorySet>
<Category CategoryID="1" CategoryName="Beverages">
<Product ProductID="1" ProductName="Chai" />
<Product ProductID="2" ProductName="Chang" />
</Category>
<Category CategoryID="2" CategoryName="Condiments">
<Product ProductID="3" ProductName="Aniseed Syrup" />
<Product ProductID="4" ProductName="Chef Anton's Cajun Seasoning" />
<Product ProductID="5" ProductName="Chef Anton's Gumbo Mix" />
</Category>
<Category CategoryID="3" CategoryName="Confections">
<Product ProductID="47" ProductName="Zaanse koeken" />
<Product ProductID="48" ProductName="Chocolade" />
<Product ProductID="49" ProductName="Maxilaku" />
</Category>
</ProductCategorySet>
Good Luck1