zoukankan      html  css  js  c++  java
  • C#-XML

    • XML用处
    存储配置文件,存储数据用于远程传输等。.net提供了system.xml命名空间的类,用于读写xml文件(XmlTextReader、XmlWriter),分析xml文件结构(XmlNode、XmlDocument),转换xml文件格式成其他格式文件(XmlTransform),用xml类处理数据,用XPath类在xml文件查询。
    • 理解XML
    XML。SGML通用标记语言的子集,这语言派生出HTML和XML。XML是与人工可读元数据相结合的人工可读数据。元素,包含一对标签和一个值。xml允许空白增强可读性,类似C#每行前面的空格。xml和html一样,都是由成对标记和数据组成<br /br>,/,<p/>代表一对P标签,其他类似。< />一对空标记
    xml可按规则随意给元素起名(<city>berlin</city>),规则是名称是任何字母数字字符专用字符,没空白,以字母或下划线开始。例如元素<city>berlin</city>,名称是city,值是berlin。元素可嵌套,不能重叠(即在同一上级里重复,xml文件,从数据结构看,是一棵树),用ie打开xml即可查看xml的内容。
    xml命名空间,在xsd文档(用xml表示数据库结构的文档),有xmlns=,代表这个xml的namespace,=后面是命名空间名,xmlns: 是引用其他命名空间。同名xml元素,用命名空间区分,例如,xs是用前缀xmlns标记的using的其他命名空间名,这里表示element标记来自xs命名空间<xs : element  name="address" type="xs:string" minOccurs="0"/>。
    也可用特性表示xml内容。有时用元素表示,并嵌套;还可以用特性表示xml内容,一个特性,就是一个单元格数据,包含在一个元素内,这里的一个元素,代表一行数据。
    xml内容里可以有转义字符。如&lt: 代表<,&apos: 代表单引号'等;还可以用cdata标记这是整个字符串,这个字符串不包含语法方面的符合,例如<![cdata[aldjflja!@#$]]>中的aldjflja!@#$,就被标记成字符串。
    注释和处理指令。如<? ?>是给电脑看的处理指令,<-- -->是给人看的注释,不能嵌套。例如这个处理指令把样式表与当前文件联系起来<?xml-stylesheet href="customers.css" type="text/css"?>
    • XSLT
    是一个转换xml的转换器,xsl文件包含与xml元素对应的格式信息(如xml某个名称节点的换行br,段落p等),与xml文件一起,可把xml文件输出成html(把xlt在xml对应元素上的格式,加入到xml数据)、txt、word等几乎任何文件格式。可在xml文件中指定xls样式文件,<?xml-stylesheet type="text/xsl" href="cust.xsl"?>。样式文件cust.xlt中,body中没有标记命名空间的元素,会当做xml文件的样式(前面用ie打开xml,就是调用了ie中内置的xslt这个转换器,加载xml文件中绑定的xls文件,把xml显示出来)。样式文件,其实就是xhtml文件(用xml重写的html4.01),xlt中可以使用foreach循环,例如用来找xml文件中的所有指定的元素名称select=,还可以用value-of返回找到元素的值。需要注意的是xml中的标记一定要成对出现,html可省略后面的,例外是这种一个的标记<p/>。
    • XSD
    描述数据库架构。
    引用命名空间。例如xmlns:mstns=“http://tempuri.org/dataset1.xsd”
    定义dataset元素内容,从这里开始,例子是连续的。例如<xs:element name="dataset1" msdata:isdataset="true">
    定义dataset元素包含的数据数量。例如 <xs:conplextype> <xs:choice maxOccrurs="unbounded">,无限数据。
    定义在dataset元素中的数据元素。例如<xs:element name="customers">
    定义表的列。每开始一级,就加<xs:complexType>。<xs:sequence> <xs:element name ="custeomerID" type ="xs:string" />
    定义表的主键。
    其他可参看vs在线帮助中“xsd架构参考”
    • 写XML
    读写XML,类似流和输入输出那章的内容。
    写XML文件。用XmlTextWriter类,派生自XmlWriter类。过程是
    XmlTextWriter xw new XmlTextWriter(@“本地目录和文件名.xml",system.text.encoding.utf8);//在指定目录新建指定的xml文件,指定字符集
    xw.writestartdocument;//开始写文档
    xw.writestartelement(”newdataset“);//写一个元素标签头
    xw.writestratelement("customers");//再写一个元素标签头,因上一个元素没结束,所以这个嵌套在上一个元素内。
    xw.writeelementstring(”coustomerID“,”ID1“);//在上一个标签头内容,写一个元素名和元素值
    ...//写其他元素
    xw.writeendelement();上一个元素完成,customers的,对应数据库的一行数据
    xw.writestartelement(”customers“);//写另一行数据
    ...
    xw.writeendelement();//这行数据完成
    xw.writeendelement();//newdataset元素dataset完成,dataset可含多个表
    xw.writeendDocument();//完成文档写。
    xw.flush();//内存的数据,提交到存储
    xw.close();
    ...
    XmlTextWriter类自动写xml文件的声明。没在这个文件写空白和非默认的格式信息。
    • DOM文档对象模型
    XmlDataDocument用于同步DataSet和xml,继承自xmlDocument类,xmldoucument类是DOM的一个实现。
    DOM。是接口,用于程序和脚本动态地访问和更新文档内容、文档结构、文档样式。XML文件和HTTP文件以节点树形式保存DOM标准,DOM是W3C的正式标准。DOM标准是一组标准,包括XML DOM、DHTML DOM(动态HTML文档的表示标准)。不可能支持整个COM标准,.NET框架包括对DOM Level 1 Core和DOM Level 2 Core规范的支持,还通过向DOM规范添加额外的对象、方法、属性来扩展DOM,Internet厂商一般也都这样做,具体厂商是如何执行的,需要参照厂商的文档。 DOM具体标准在www.w3.org/dom
    XML DOM在.net的实现。XmlNode类和XmlDocument类实现XML DOM。XmlNode表示XML文件的一个基本部分。XmlDocument把整个文件表示为XmlNode对象的集合。
    XmlNode类。从前面的可看出,XML文档就是一系列互相嵌套的元素和特性,都可转换为树结构,元素和特性都表示为节点,XmlNodeType枚举表示节点的类型,从技术上讲,特性是父元素的属性,使用XmlNode可以读取和设置节点属性。另外根据节点类型,派生出XMLAttribute类、XmlComment类、XmlElement类。XmlNode的NodeType属性包含元素element、特性Attribute、特性元素其他节点的文本内容text等,XmlNode的Attributes属性是此node的特性,XmlNode的haschildnodes属性,XmlNode的nextsibling属性获得树中下一个node,xmlNamedNodeMap是多个节点集合
    XmlDocument类。继承自XmlNode类,XmlDocument的DocumentElement属性表示文档XML根元素。XmlDataDocument继承自xmlDocument继承在XmlNode。
    • 读XML文件
    用xmlreader抽象类的3个派生类,xmlValidatingReader,XmlNodeReader类,XmlTextReader,返回用文档对象模型DOM承载的XML文件信息。xmlTextReader属性WhitespaceHandling表示空白如何处理。
    读取过程。使用xmlTextReader读取文件,使用XmlDocument的Load方法,把内容加入到XmlDocument中,并按标准格式化,用XmlDocument的DocumentElement属性获取跟节点,用每个节点的NextSibling属性依次获取下一个节点,知道获取不到下一个节点,用XmlNode的name和value属性获取每个节点的名称和值,用节点的Attributes属性获取每个节点的特性集(保存到xmlNamedNodeMap的对象里,每个特性也有name和value属性)。
    • 转换XML
    通过system.xml.Xsl命名空间的对象实现。如XslTransform类。
    转换过程。创建XmlTextReader对象读xml文件,用XmlDocument的load方法标准化数据,用XslTransform的load方法读取xsl样式文件,创建MemoryStream对象,用读取了xsl的XslTransform对象的Transform方法转换XmlDocument中的数据,同时把转换后的数据保存到MemoryStream,把MemoryStream内容的起始位置设为1,创建关联了MemoryStream的StreamReader,用StreamReader的ReadToEnd方法,输出转换后的内容,这内容默认是html格式。
    XslTransform类的transform方法有一些重载的格式,实现输出到MemoryStream以为的对象,如netStream跨网络发送转换后的数据,StringWriter发送给某个文件。
    • 在XML查询数据
    用XPath标准。
     
     
     
     
     
     
     
     
  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/yinlg/p/4904766.html
Copyright © 2011-2022 走看看