`
ljzforever
  • 浏览: 117566 次
  • 性别: 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

分享到:
评论

相关推荐

    markupclass VC XML操作类

    这个类库可能包含了若干个类,如XMLDocument、XMLElement等,用于封装XML文件的操作。例如,XMLDocument类可能用于加载和保存XML文件,而XMLElement类则可能用于处理XML文件中的元素节点。 在"example"中,开发者...

    ASP.NET服务器控件

    ASP.NET服务器控件是.NET Framework框架中的核心组件之一,它们为Web开发...在ControlManager这个主题下,可能涉及的是对服务器控件的管理、配置或扩展,例如创建自定义控件库,或者实现更高级的控件管理和优化策略。

    .net断点上传示例源码

    在.NET开发中,断点上传是一项...总的来说,断点上传在.NET中的实现涉及到文件操作、网络通信和状态管理等多个方面,通过分析和实践这段示例源码,开发者可以更好地理解和掌握这种技术,提升在实际项目中的应用水平。

    ASP.NET MVC4 + NHibernate3.3 DEMO

    NHibernate3.3版本在性能和稳定性上有所提升,同时增加了对LINQ的支持,使得与C#和VB.NET的集成更加紧密。 在这个DEMO中,开发者可能展示了如何配置NHibernate以连接到数据库,包括创建Hibernate.cfg.xml配置文件,...

    Ado.Net完全攻略

    9. **XML集成**:ADO.NET与XML紧密集成,可以方便地在DataSet和XML文档之间转换,实现数据的导入导出。 10. **性能优化**:使用Command对象的Prepare方法预编译SQL命令,提高执行效率;利用Pooling技术减少数据库...

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

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

    cognos web service开发(.net实例)

    本文档主要关注使用 XML-RPC 与 Visual Studio .NET 结合的方式进行 Cognos Web Services 的调用。 #### 使用 Visual Studio .NET 本章节将介绍如何创建一个新的 Visual Basic .NET 应用程序,并利用 RPC 方法来...

    asp.net 用XML生成放便扩展的自定义树

    每个`Module`下又包含若干个`Menu`节点,这些`Menu`节点代表了模块下的子菜单,每个`Menu`又可以有多个`Item`节点,表示具体的菜单项。 `Module`、`Menu`和`Item`节点都具有相关的属性,如`Id`、`Permissions`、`...

    新VB.NET源代码.zip

    VB.NET是一种基于.NET Framework的编程语言,由微软公司开发,旨在提供一种更加现代、类型安全且面向对象的编程环境。...此外,还可以探索.NET Framework的强大功能,提升你的编程技能和对软件开发的理解。

    C#与XML整合大全

    6. **Xml文件.rar**:包含了若干XML文件,这些文件可以用于测试和学习XML的读写操作,以及验证解析和序列化XML数据的方法。 7. **WindowsApplication1.zip**:这可能是一个C# Windows应用程序,演示了XML数据在桌面...

    ADO.NET.txt

    通过ADO.NET,开发人员可以与各种数据源进行高效、灵活的数据交互,包括关系数据库(如SQL Server、Oracle等)、XML文件和其他数据源。在本文中,我们将深入探讨ADO.NET的核心概念和技术细节,特别是如何使用C#语言...

    asp若干例子xml以及其他例子

    这个压缩包“asp若干例子xml以及其他例子”显然包含了多个ASP应用实例,其中包括了XML和UrlReWrite(URL重写)的技术应用。下面将详细阐述这些知识点。 1. ASP基础: ASP是基于VBScript(Visual Basic Script)的,...

    二进制XML存储方案

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

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

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

    C#2008和.net 3.5平台

    此版本在.NET Framework 3.0的基础上增加了大量新功能,特别是对WCF(Windows Communication Foundation)、WPF(Windows Presentation Foundation)和WF(Windows Workflow Foundation)的增强。WCF提供了统一的...

    C#.net web开发者指南(英文附源码)

    9. **AJAX与jQuery**:为了让Web应用更加交互和响应,你需要掌握异步JavaScript和XML(AJAX)技术,以及使用jQuery库来简化DOM操作和事件处理。 10. **部署与调试**:理解如何将应用程序部署到IIS服务器,以及如何...

    ASP.NET 大杂桧

    首先,AJAXPro是ASP.NET中的一个库,它允许开发者创建高效的、具有部分页面更新功能的Web应用,类似于JavaScript的AJAX(Asynchronous JavaScript and XML)。在描述中提到的“带参数的传递模式”,指的是在使用...

    由XML生成treeview节点

    1. **解析XML文件**:使用XML解析库,如.NET框架中的`System.Xml.Linq`库,来加载和解析XML文件。以下是如何使用`XDocument`类加载`example.xml`: ```csharp XDocument doc = XDocument.Load("example.xml"); `...

    校友录系统(ASP.NET 3.5实现)

    ASP.NET 3.5是.NET Framework 3.5的一部分,引入了若干新特性,例如: 1. **LINQ (Language Integrated Query)**:LINQ允许开发者使用一种更自然、更直观的方式来查询数据,支持SQL数据库、XML文档以及各种数据源。...

Global site tag (gtag.js) - Google Analytics