`
ljzforever
  • 浏览: 114776 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

.net 下对Xml的若干操作

    博客分类:
  • xml
阅读更多

1.XmlSchema

有两种方式:

1.在Dom模型中执行验证

//XmlDocument doc = new XmlDocument();

//载入语法
//doc.Schemas.Add("www.ljzforever.com", "xsd.xsd");

//载入文档
//doc.Load("xml.xml");

//进行验证,并指定验证时出错了后触发的方法
//doc.Validate(ValidateHandler);

 

2.用参数对象执行验证

XmlReaderSettings set = new XmlReaderSettings();

//载入语法
set.Schemas.Add("www.ljzforever.com", "xsd.xsd");

//验证类型
set.ValidationType = ValidationType.Schema;

//指定验证时出错了后触发的方法
set.ValidationEventHandler += ValidateHandler;

//将参数对象加载进阅读器
XmlReader read = XmlReader.Create("xml.xml", set);

//在加载文档的过程中进行验证
while (read.Read()){}

//上面一句或者用:

//XmlDocument doc = new XmlDocument();
//doc.Load(read);

 

///验证时出错了后触发的方法

static void ValidateHandler(object sender, ValidationEventArgs e)
{
    Console.WriteLine(e.Message);
}

 

2.xslt

//载入

XslCompiledTransform tran = new XslCompiledTransform();
tran.Load("xsl.xsl");

//准备流
MemoryStream ms = new MemoryStream();
XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);

//准备参数
XsltArgumentList list = new XsltArgumentList();
list.AddParam("level", "", 3);

//将结果转入流
tran.Transform("xml.xml",list, xtw);

//将流转入字符串
byte[] buffer = new byte[ms.Length];
ms.Position = 0;
ms.Read(buffer, 0, (int)ms.Length);
Console.WriteLine(System.Text.Encoding.UTF8.GetString(buffer));
Console.ReadKey();

 

上面只是通常情况,如果需要将节点以参数的形式传入xslt的话,就需要引入新的对象了

//用XPathDocument载入文档

XPathDocument path = new XPathDocument("xml.xml");

//创建导航
XPathNavigator nav = path.CreateNavigator();

//在导航内选择结点集,是xpath语法
XPathNodeIterator iter = nav.Select("//emp");

//将结点集导入参数值

list.AddParam("level", "", iter);

 

3.关于XmlDataDocument对象

通过XmlDataDocument对象,我们可以与DataSet建立关系,但是在我研究中发现,实际上在这两个对象之间DataSet才是主类,XmlDataDocument主要是起来一个配合作用。(哈哈,个人意件),因为无论任何时候,都要求DataSet加载Schema(架构),不然就不可用啊!

有三种方式建立两者的关系

a.先建立DataSet,并加载xml文档,然后在XmlDataDocument的构造函数中建立关系:

DataSet ds = new DataSet()

ds.ReadXml("xml.xml");

XmlDataDocument doc = new XmlDataDocument (ds)

b.先建立DataSet,并加载xml架构,然后在XmlDataDocument的构造函数中建立关系,最后在XmlDataDocument中加载文档:

DataSet ds = new DataSet()

ds.ReadXmlSchema("xsd.xsd");

XmlDataDocument doc = new XmlDataDocument (ds)

doc .Load("xml.xml");

c.先建立XmlDataDocument,然后建立DataSet,并将XmlDataDocument的DataSet属性赋给它,然后DataSet加载架构,最后XmlDataDocument加载文档

XmlDataDocument doc = new XmlDataDocument (ds)

DataSet ds = data.DataSet;
ds.ReadXmlSchema("ds.xsd");
data.Load("xml.xml");

 

总之,不管怎样建立,DataSet都要求有架构,且不能晚于文档加载,必须同时加载或先加载!

通过引入XmlDataDocument,使DataSet中的数据既可以用ado.net的方式操作,又可以用xml的Dom模型或流模型操作,增强了操作的灵活性。

 

注意:

1.推存使用第三种构造方式,因为这样可以必免 XML 文档的失真。如果 DataSet 是使用 ReadXml 从 XML 文件中填充的,那么当使用 WriteXml 以 XML 文档形式写回数据时,数据可能大大不同于初始的 XML 文档。这是因为 DataSet 不维护 XML 文档中的格式设置(如空白)或分层信息(如元素顺序)。DataSet 也不包含 XML 文档中因为不匹配 Dataset 架构而被忽略的元素。通过使 XmlDataDocumentDataSet 同步,可以在 XmlDataDocument 中维护初始 XML 文档的格式设置和分层元素结构,而 DataSet 仅包含适用于 DataSet 的数据和架构信息。

2.DataSet都要求有架构,且不能晚于文档加载,必须同时加载或先加载!上面己说明的很详细了

3.所有使用XmlDocument的地方都可以使用XmlDataDocument ,因为XmlDataDocument 是对XmlDocument的扩展

 

 

参考的文章:

XmlDataDocument 与Dataset

http://software.it168.com/manual/asp.net/4-4-6.htm

使 DataSet 与 XmlDataDocument 同步的示例(节点和字段对应的编程)

http://www.cnblogs.com/cuihongyu3503319/archive/2007/01/07/614072.html

高手进来谈一下XmlDataDocument类和DataSet类的区别看看

http://topic.csdn.net/t/20040920/02/3389023.html

XmlDocument 与 XmlDataDocument 的区别

http://www.cftea.com/c/2008/07/Q1DY3YTFNQ8V95LB.asp

XmlDataDocument 问题

http://topic.csdn.net/t/20050603/07/4055616.html

解析.Net框架下的XML编程技术

http://blog.csdn.net/qdzx2008/archive/2006/04/17/666566.aspx

请教XmlDataDocument的问题

http://topic.csdn.net/t/20050420/14/3952062.html

分享到:
评论

相关推荐

    ado[1].net中文手册 学习 ado.net的重要资料

    作为一项工业标准,XML 正是在谨记这种互操作性的情况下设计的。 可维护性 在已部署系统的生存期中,适度的更改是可能的,但由于十分困难,所以很少尝试进行实质的结构更改。这是很遗憾的,因为在事件的自然过程中...

    ASP.NET的网页代码模型及生命周期

    相比之下,ASP.NET Web Application不仅加快了速度,只生成一个程序集,而且可以拆分成多个项目进行管理。创建Application,首先需要新建项目用于开发Web Application,单击菜单栏上的【文件】按钮,在下拉菜单中...

    Spring.net框架

    在这个系列 中,我仅仅利用Sping.net这个框架向大家展示一下Ioc与AOP的强大功能(呵呵,其实写这段话的目的是因为“文章题目”牛皮吹得有点大了,给自 己个台阶下罢了)。 在这个系列中一共包含6个案例,从简单到...

    二进制XML存储方案

    传统情况下,我们会用一个或者若干个struct将数据打包,一下子塞进文件。但是现在用户说了:我们现在定义的数据结构可能会变:) 看来,我们的存储方案还必须要足够的柔性化。 想到最后,我决定还是借鉴XML的树型...

    C#程序设计(最新的培训教材)

    Microsoft .NET平台主要包含底层操作系统、辅助产品(.NET企业服务器)、Microsoft XML Web服务和开发平台(.NET框架)四个部分。 1.底层操作系统——Windows 由于Web服务和使用Web服务的应用程序仍然运行在计算机...

    开源贡献者最多的.net开源web框架ServiceStack.zip

     ServiceStack 是一系列事物的综合体:包含高性能 Razor Engine 的 Web 应用框架支持例如 HTML,XML,JSON,SOAP 等多种格式的基于消息的 Web 服务框架包含内建 IOC 的容器若干内建库文件,诸如:Text serializer...

    Mybatis之xml开发-用户角色权限关联案例(答案)

    该案例就2个练习题,一个查看所有用户,一个查询指定若干个用户;但在查询的同时必须查询出每一个用户对应的所有角色,且每一个不同的角色所对应的权限,有一级权限和二级权限;在查询一级权限的同时需查询出对应的...

    .NETFrameworkv3.5.zip

    Microsoft .NET Framework 3.5 包含许多与 .NET Framework 2.0 和 .NET Framework 3.0 都可兼容的新功能..NET Framework 3.5 包括若干针对 .NET Framework 2.0 和 .NET Framework 3.0 的修补程序. .NET Framework ...

    asp.net 聊天室

    服务器端为新登陆用户分配一空闲ID,并将新用户信息添加至Xml用户列表中,最后向客户端返回其用户ID、用户列表和最近若干条聊天信息

    《开放实验室管理系统》毕 业 设 计 说 明 书

    ASP.NET 直接使用运行库以启用 ASP.NET 应用程序和 XML Web services(本主题稍后将对这两者进行讨论)。 Internet Explorer 是承载运行库(以 MIME 类型扩展的形式)的非托管应用程序的一个示例。使用 Internet ...

    dotnet framework 2.0

    .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件。.NET Framework 旨在实现下列目标:  提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在...

    基于jQuery的控件源码

    XML 数据源 是Xml数据源的实例,效果和前者基本一致,只是数据源不同 格式化Table 是将一个已经存在的Html表格格式化成一个flexigrid Style Table 访问数据库 是一个连接数据库的实例数据源为Json。演示...

    新版Android开发教程.rar

    这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...

    jpivot学习总结.doc

    最后你还需要对比 jpivot.war 里的 web.xml 文件去修改你自己的 web.xml 文件。 2. 例子说明 一个Schema的xml文件,定义立方体;(feeSchema.xml) 一个jsp文件(fee.jsp),使用jpivot的标签(jp:mondrianQuery),...

    PowerShell 介紹

    * 在命令列剖析複雜的運算式及操作 .NET Framework 物件 * 包括以管道輸送物件,協助 IT 專業人員更有效率的工作 * 管理不同存放區和不同格式的 Windows 資料 * ADSI、WMI、COM 物件、ADO、HTML 和 XML 的標準...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    <br>IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...

    网站设计大赛方案.doc

    文件的检索 建立 增加 修改 删除 目录操作 7、XML :dtd xsl 数据库 8、动态网页技术:ASP、ASP.NET、PHP、JSP 六、其他要求 (10) 1、word格式说明文档一份 ¬ 清楚表述网站的整体设计意图及其功能 ¬ 列举网站...

    网站设计大赛方案(1).doc

    文件的检索 建立 增加 修改 删除 目录操作 7、XML :dtd xsl 数据库 8、动态网页技术:ASP、ASP.NET、PHP、JSP 六、其他要求 (10) 1、word格式说明文档一份 ( 清楚表述网站的整体设计意图及其功能 ( 列举网站设计...

    AppFramework_V1.0

    <br>IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...

Global site tag (gtag.js) - Google Analytics