DataSet 写 XML 是否嵌套

关键是设置
DataRelation.Nested 属性,如果 DataRelation 对象嵌套,则为 true;否则为 false。
无论输入的xml文件是下面的其中之一,
(1)第一种方式为嵌套

<NewDataSet>
	<Categories>
		<CategoryID>1</CategoryID>
		<CategoryName>Beverages</CategoryName>
		<Products>
			<CategoryID>1</CategoryID>
			<ProductID>1</ProductID>
			<ProductName>Chai</ProductName>
		</Products>
		<Products>
			<CategoryID>1</CategoryID>
			<ProductID>2</ProductID>
			<ProductName>Chang</ProductName>
		</Products>
	</Categories>
	<Categories>
		<CategoryID>2</CategoryID>
		<CategoryName>Condiments</CategoryName>
		<Products>
			<CategoryID>2</CategoryID>
			<ProductID>3</ProductID>
			<ProductName>Aniseed Syrup</ProductName>
		</Products>
		<Products>
			<CategoryID>2</CategoryID>
			<ProductID>4</ProductID>
			<ProductName>Chef Anton's Cajun Seasoning</ProductName>
		</Products>
	</Categories>
</NewDataSet>

(2)第二种方式为非嵌套

<NewDataSet>
	<Categories>
		<CategoryID>1</CategoryID>
		<CategoryName>Beverages</CategoryName>
	</Categories>
	<Categories>
		<CategoryID>2</CategoryID>
		<CategoryName>Condiments</CategoryName>
	</Categories>
	<Products>
		<CategoryID>1</CategoryID>
		<ProductID>1</ProductID>
		<ProductName>Chai</ProductName>
	</Products>
	<Products>
		<CategoryID>1</CategoryID>
		<ProductID>2</ProductID>
		<ProductName>Chang</ProductName>
	</Products>
	<Products>
		<CategoryID>2</CategoryID>
		<ProductID>3</ProductID>
		<ProductName>Aniseed Syrup</ProductName>
	</Products>
	<Products>
		<CategoryID>2</CategoryID>
		<ProductID>4</ProductID>
		<ProductName>Chef Anton's Cajun Seasoning</ProductName>
	</Products>
</NewDataSet>

 

使用下面测试代码

/*------------------------------------------------
https://blog.csdn.net/vs880       
--------------------------------------------------*/
namespace vs880.Test.ConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("NewDataSet");
            DataTable CategoryDT = new DataTable("Categories");//目录表
            CategoryDT.Columns.Add("CategoryID", typeof(int));//PK
            CategoryDT.Columns.Add("CategoryName", typeof(string));
            CategoryDT.PrimaryKey = new DataColumn[] { CategoryDT.Columns["CategoryID"] };
            ds.Tables.Add(CategoryDT);

            DataTable ProductDT = new DataTable("Products");//目录表
            ProductDT.Columns.Add("ProductID", typeof(int));//PK            
            ProductDT.Columns.Add("ProductName", typeof(string));
            ProductDT.Columns.Add("CategoryID", typeof(int));//FK
            ProductDT.PrimaryKey = new DataColumn[] { ProductDT.Columns["ProductID"] };
            ds.Tables.Add(ProductDT);

            DataRelation dr = new DataRelation("关系名称",
                    ds.Tables["Categories"].Columns["CategoryID"], ds.Tables["Products"].Columns["CategoryID"], true);
            dr.Nested = true;//设置DataRelation 对象嵌套。
            ds.Relations.Add(dr);

            ds.ReadXml("c:\\test_in.xml");
            ds.WriteXml("c:\\test_out.xml");

           
            //Console.ReadLine();
        }       
    }  
}

最终输出结果都由dr.Nested = true;生成嵌套输出。
 

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
	<Categories>
		<CategoryID>1</CategoryID>
		<CategoryName>Beverages</CategoryName>
		<Products>
			<ProductID>1</ProductID>
			<ProductName>Chai</ProductName>
			<CategoryID>1</CategoryID>
		</Products>
		<Products>
			<ProductID>2</ProductID>
			<ProductName>Chang</ProductName>
			<CategoryID>1</CategoryID>
		</Products>
	</Categories>
	<Categories>
		<CategoryID>2</CategoryID>
		<CategoryName>Condiments</CategoryName>
		<Products>
			<ProductID>3</ProductID>
			<ProductName>Aniseed Syrup</ProductName>
			<CategoryID>2</CategoryID>
		</Products>
		<Products>
			<ProductID>4</ProductID>
			<ProductName>Chef Anton's Cajun Seasoning</ProductName>
			<CategoryID>2</CategoryID>
		</Products>
	</Categories>
</NewDataSet> 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值