`
mlzboy
  • 浏览: 724841 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

XML文档数据操作心得

阅读更多

目录

XML文档数据操作心得    1

修订历史纪录    3

1.    说明:    3

2.    什么是XML:    3

3.    XML的优点:    3

3.1    平台无关性:    3

3.2    灵活性:    3

3.3    开放性:    3

3.4    可扩展性:    4

3.5 信息传输的便捷性:    4

4 使用C# 对XML进行操作心得    4

 

 

  1. 说明:

由于关于XML的知识有较多的学习资料,又鉴于本人的知识实在有限,所以本文旨在将我前一段在工作中遇到的问题和积累的一些经验和大家分享一下。

  1. 什么是XML:

XML(Extensible Markup Language)是可扩展标记语言的缩写,它是由W3C工作组定义的一种标记语言。

  1. XML的优点:

    1. 平台无关性:

      XML独立于具体的操作平台和应用系统,具有很强的可重用性。

    2. 灵活性:

      XML提供了一种结构化的数据表示方式,并将文档结构于显示内容分开。此外,XML还允许各种不同的专业与自己的特定领域有关的标记语言,使数据从描述和过程中分离出来。

    3. 开放性:

      XML允许以最合适的输出格式好用于应用程序的格式来传递内容。只要应用程序都支持XML,就可以在程序间无缝的交换数据。

    4. 可扩展性:

      允许用户创建自己的可被用于应用程序的可扩展的标志集,描述的精度可以由用户自己定义。

3.5 信息传输的便捷性:

XML的数据是完全基于文档的,传输速度快,并且几乎所有的系统都能接收和理解XML数据。

4 使用C# 对XML进行操作心得

C#为操作XML数据提供了相当多简单易行的方法,而且也有XML与数据库间直接转换的方法,但是由于是第一次接触这方面的知识,为了更加熟悉有关XML的基本知识,所以我采用的是最为基础的循环读元素和属性的方法。

这次的系统的表间关系相对比较复杂,对操作的限制也比较大。另外这次使用的XML文档格式是用属性来存储数据,而与大多数书籍上的参考资料不同,这些给我带来了一些干扰。个人认为两种存储方法各有优点,用属性存储数据给人感觉比较简洁,但数据间关系不够清晰,而且操作比较繁琐。而以元素形式存储则略显臃肿。

在实际操作中,我使用的是XMLReader类的派生类XMLTextReader类读取XML文档中的数据,其中提取了一些我认为常用的属性和方法:

属性/方法

 

AttributeCount

当前结点上的属性数

Name

结点或属性名

Value

结点或属性值

has Attribute

当前结点是否有属性,true或false

GetAttribute()

获得属性值

Read( )

读取下一结点

MoveToAttribute()

移动的指定结点

MoveToNextAttribute()

移动到下一结点

在功能的实现方面,我使用的是最原始的while循环嵌套加if判断的方式确保循环到每一层、每一结点及每一属性,并生成sql语句完成数据库操作,感觉上代码比较臃肿,并且方法比较原始笨拙,但对XML的相关知识理解有了进一步加深。

个人理解,由于XML灵活性,可以自己定义标签的名称,这就为对其操作带来了很多简洁而灵活的方法,在深刻了解了XML文档结构后对操作代码进行重构,可以极大的减少代码量,提高可读性。

由于看到了使用的方法比较原始而且可读性不高,我也在积极的修改代码,争取应用C#类库中比较简单实用的类和方法,改善代码,提高可读性。

5 代码示例

<?xml version="1.0" encoding="utf-8"?>

<Databases>

<Database Name="aa" CheckinTime="" UpdateTime="" version="" />

<Tables>

<Table Name="aaa1" CheckinTime="" UpdateTime="" version="" />

<Columns>

<Column Name="aaa1a" CheckinTime="" UpdateTime="" version="" />

</Columns>

<Table Name="aaa2" CheckinTime="" UpdateTime="" version="" />

<Columns>

<Column Name="aaa2a" CheckinTime="" UpdateTime="" version="" />

</Columns>

</Tables>

</Databases>

以上是一段简单的XML文档,我们需要按照Database—>Table—>Column的顺序逐层的遍历所有数据。

using System;

using System.Collections.Generic;

using System.Text;

using System.Xml;

 

namespace _

{

class Program

{

static void Main(string[] args)

{

XmlTextReader rd = new XmlTextReader("C:\\Documents and Settings\\Administrator.D4D1C4378A72451\\桌面\\1.xml"); //读取指定路径的文件

rd.WhitespaceHandling = WhitespaceHandling.None;

 

while (rd.Read()) //最外层循环,遍历所有Database

{

if (rd.Name != "Database") //找到首个Database结点

continue;

for (int i = 0; i < rd.Depth; i++)

{

Console.Write("\t");

}

Console.Write("<");

for (int i = 0; i < rd.AttributeCount; i++)

{

Console.Write("{0}='{1}'", rd.Name, rd.GetAttribute(i));

}

Console.WriteLine("/>");

while (rd.Read() && !(rd.NodeType == XmlNodeType.EndElement && rd.Name == "Tables")) //遍历提取所有的Table中的数据

{

if (rd.Name != "Table")

continue;

for (int i = 0; i < rd.Depth; i++)

{

Console.Write("\t");

}

Console.Write("<");

for (int i = 0; i < rd.AttributeCount; i++)

{

Console.Write("{0}='{1}'", rd.Name, rd.GetAttribute(i));

}

Console.WriteLine("/>");

while (rd.Read() && !(rd.NodeType == XmlNodeType.EndElement && rd.Name == "Columns")) //遍历提取所有的Column中的数据

{

if (rd.Name != "Column")

continue;

for (int i = 0; i < rd.Depth; i++)

{

Console.Write("\t");

}

Console.Write("<");

for (int i = 0; i < rd.AttributeCount; i++)

{

Console.Write("{0}='{1}'", rd.Name, rd.GetAttribute(i));

}

Console.WriteLine("/>");

}

}

}

 

}

}

}

这是一段遍历上面XML文档的代码,运行结果如下图。提取了所有数据,便可以进行更新数据库。

分享到:
评论

相关推荐

    XML学习心得分享XML学习心得分享

    XML Parser是用于解析XML文档的工具,常见的XML Parser包括: * MSXML Parser:为Microsoft内建于Internet Explorer的XML剖析器 * Apache Xerces:为Java语言预设使用的XML剖析器 * Oracle XML Parser:为Oracle...

    xml-rpc学习心得

    XML-RPC使得运行在不同操作系统上的应用程序能够通过网络互相通信并共享功能。这种协议的主要优势在于其简单性、跨平台能力和广泛的支持。 #### 二、XML-RPC客户端详解 在了解XML-RPC客户端之前,我们先来了解一下...

    TINYXML学习心得及原代码

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件以及软件的本地化等场景。TINYXML是一个轻量级的C++库,它提供了读写XML文档的能力,适合在资源有限或者对性能要求不高的...

    xml学习心得.pdf

    XML 学习心得 XML(Extensible Markup Language)是标准通用标记语言的子集,用于标记电子文件,使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。...

    使用XmlDocumentXmlDataDocument类加载XML文件时如何忽略DTD验证

    在处理XML文件时,有时我们可能会遇到由于XML文档包含了对外部DTD(Document Type Definition)的引用,导致在使用`XmlDocument`或`XmlDataDocument`类加载文件时出现验证异常。DTD是XML的一个组成部分,用于定义XML...

    VS2008读写XML文件

    MSXML是微软提供的一系列接口,用于解析、操作和创建XML文档。 读取XML文件在VS2008中主要涉及以下步骤: 1. 引入MSXML库:首先,在C++或VB.NET项目中,需要添加对MSXML库的引用。对于C++,这通常意味着包含头文件...

    xml.rar_student_xml_xml 课程设计_xml报告_xml课程设计

    接下来,源代码部分可能涉及到如何解析和操作XML文档。在Java、Python或.NET等编程环境中,都有专门处理XML的库。例如,Java中的JAXB(Java Architecture for XML Binding)可以将XML数据绑定到Java对象,方便读写...

    xml学习心得.doc

    XML文档的结构必须严格遵循规则,例如所有元素都必须正确关闭,属性值必须用引号包围,元素命名遵循特定的命名规则等。XML解析器会检查这些规则,如果发现错误,文档将被认为是无效的。 XML的应用广泛,可以用于...

    XML宝典(第二版)part3_pdf格式

    XML文档由一系列元素构成,每个元素都有自己的开始标签和结束标签,如`&lt;element&gt;`和`&lt;/element&gt;`,可以嵌套并包含属性,以增加数据的描述性。 DTD(Document Type Definition)是XML的一个关键概念,它定义了XML...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    DTD是"有效XML文档"的必须文件,我们通过DTD文件来定义文档中元素和标识的规则及相互关系。如何建立一个DTD文件呢?让我们一起来学习: 1.设置元素 元素是XML文档的基本组成部分。你要在DTD中定义一个元素,然后...

    CSS、XSL显示XML实验报告 报告+实验代码+截图+心得

    - **理解CSS与XSL在处理XML数据时的不同之处**:CSS更侧重于样式的表现,而XSL则是一种用于转换XML文档结构的强大工具。 - **掌握CSS的基本语法及其在显示XML数据时的应用方法**。 - **掌握XSL的基本语法及其在转换...

    XML轻松学习手册(chm)

    DOM · 第三章:XML的术语 · 导言 · 一.XML文档的有关术语 · 二.DTD的有关术语 · 第四章:XML的语法 · 一.XML语法规则 · 二.元素的语法 · 三.注释的语法 · 四.CDATA的语法 ...

    xml实例--练习加源代码

    8. **XPath**:XPath是用于选取XML文档中的节点的语言,通过路径表达式来选取节点,便于查找、导航和操作XML数据。 9. **XSLT**:XSL Transformations(XSLT)是一种用于转换XML文档的样式表语言,可以将XML转换成...

    XML Publisher官方英文帮助.pdf

    - **数据集成**:能够从多种数据源(如 Oracle 数据库、XML 文件等)提取数据,并将其合并到报告中。 - **灵活性**:支持动态内容生成,可以根据不同的数据输入自动调整报告内容。 - **安全性**:提供了安全的数据...

    个人心得 下载个人心得 下载个人心得 下载

    在处理XML文档时,解析器是关键工具,用于读取和解释XML数据。`OӋ`可能指的是处理XML过程中遇到的错误或异常,这在开发中是常见的问题,需要通过调试和修正代码来解决。 3. **Java环境下的XML操作**:“个人心得”...

    xml中dtd总结

    它定义了XML文档中允许的元素、属性和实体等规则,确保XML文档格式正确且符合预期。本文将深入探讨DTD的基本概念、语法及其在实际开发中的应用。 #### 一、DTD简介 DTD是早期XML文档结构验证的标准方法之一。通过...

    SAX&DOM感想1

    如果XML文件较小,或者需要频繁地在整个文档中搜索和修改数据,DOM可能是更好的选择,因为它提供了方便的数据访问和操作。而如果处理的XML文件非常大,或者只需要顺序读取数据,SAX则是更优的选择,因为它的内存效率...

    douban_book_yyq_爬虫数据-豆瓣图书的爬取结果_

    在这个特定的案例中,爬虫被用来自动化地收集豆瓣图书页面的数据,生成了XML文件,这是一种结构化数据存储格式,用于方便数据交换和处理。 描述中提到“此压缩包里文件为xml”,这暗示了文件的内容是以XML...

Global site tag (gtag.js) - Google Analytics