.NET中的XML一

1.XML的特点

  与html相似,XML是一种显示数据的标记语言,它可以使数据通过网络无障碍地进行传输。同样它也可以显示在用户的浏览器上,在日常的编程中可以发现XML用的也是特别多,比如我们解决方案的配置文件等。XML的主要功能是存储数据,有效的将数据和显示分离,它的重点是有序和合理地存储数据。XML可以自定义标签,还可以是中文,可以按自己的意愿充分表达文件的内容。可以看出XML最大的优势在于对数据的管理,再加上异构系统间的信息互通和更加精确的搜索,这就是我要掌握XML的原因。下面是一段XML代码:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<网络一班>
  <学生 group="man">
    <学号>20135808</学号>
    <姓名>方一</姓名>
    <Age>20</Age>
  </学生>
  <学生 group="woman">
    <学号>20135807</学号>
    <姓名>李一</姓名>
    <Age>21</Age>
  </学生>
</网络一班> 

其中第一行最后一个属性standalone为yes表示该文件未引用其他外部XML文件。我们要注意所有的XML元素必须合理包含,所有的XML文档必须有一个根元素,XML区分大小写。在System.Xml中包含了与XML文档读写操作相关的类,主要是XmlReader、XmlTextReader、XmlValidatingReader、XmlWriter等类。

2.简单操作Xml

  显然C#肯定是用一个类来代表一个Xml,这个类是XmlDocument,它与XmlReader和XmlWriter一样具有读写功能,而且它还可以随机访问DOM树。下面是我写的一个操作Xml的例子:

public void CreateXml()
        {
            //创建一个空Xml文档
            XmlDocument xmlDocument = new XmlDocument();
            //XmlNode就是每一个节点,比如上面例子中的 "网络一班",这里创建的节点是一个Xml的声明
            XmlNode xmlNode = xmlDocument.CreateNode(XmlNodeType.XmlDeclaration, "", "");
            xmlDocument.AppendChild(xmlNode);
            //添加注释
            XmlComment xmlComment = xmlDocument.CreateComment("Xml文件的注释内容");
            xmlDocument.AppendChild(xmlComment);
            //为Xml文档加入元素,并在元素中添加文本
            XmlElement xmlElement = xmlDocument.CreateElement("", "学生", "");
            //增加一个属性
            XmlAttribute attribute = xmlDocument.CreateAttribute("专业");
            attribute.Value = "计算机";
            xmlElement.Attributes.Append(attribute);
            xmlDocument.AppendChild(xmlElement);
            //增加一个子元素
            XmlElement element2 = xmlDocument.CreateElement("姓名");
            XmlText text2 = xmlDocument.CreateTextNode("王五");
            element2.AppendChild(text2);
            xmlElement.AppendChild(element2);

            XmlElement element3 = xmlDocument.CreateElement("性别");
            text2=xmlDocument.CreateTextNode("男");
            element3.AppendChild(text2);
            xmlElement.AppendChild(element3);

            xmlDocument.Save(@"C:\Users\fyz\Desktop\MyXml.xml");
        }
<?xml version="1.0"?>
<!--Xml文件的注释内容-->
<学生 专业="计算机">
  <姓名>王五</姓名>
  <性别>男</性别>
</学生>

这样就用代码创建了一个Xml文档,从中可以总结出使用的类的作用:

XmlDocument:表示Xml文档类

XmlNode:表示Xml文档中的单个节点

XmlText:表示元素或者属性的文本内容

XmlComment:表示Xml的注释内容

XmlElement:构成Xml文档的最小单位,表示单个数据比如<姓名>王五</姓名>

XmlAttribute:属性则是节点里的说明,如专业=“计算机”

XmlDeclaration:Xml文档第一行必须要有声明

3.读写Xml

  当创建出Xml后,前面也提到有许多读写类去操作Xml。首先来看看XmlWriter类,它包含了写Xml的所有方法和属性,下面是写Xml的代码:

  public void WriteXml()
        {
            XmlTextWriter xmlWriter = new XmlTextWriter(@"C:\Users\fyz\Desktop\MyXml2.xml",null);
           //对元素内容进行缩进
            xmlWriter.Formatting = Formatting.Indented;
            //写入<?xml version="1.0"?>
            xmlWriter.WriteStartDocument();
            //设置在名称和文本之间带有空格的处理指令,
            string str = "type=‘type/xsl‘ href=‘book.xsl‘";
            xmlWriter.WriteProcessingInstruction("xml-stylesheet", str);
            //增加指定名称和可选属性的DocType声明
            xmlWriter.WriteDocType("学生", null, null, "<!ENTITY sex ‘男‘>");
            xmlWriter.WriteComment("Xml注释");
            //写入元素
            xmlWriter.WriteStartElement("学生");
            xmlWriter.WriteAttributeString("专业", "计算机");
            xmlWriter.WriteAttributeString("爱好", "编程");
            xmlWriter.WriteElementString("姓名", "王五");
            xmlWriter.WriteStartElement("性别");
            //创建对上面实体的引用,显示时为 男
            xmlWriter.WriteEntityRef("sex");
            xmlWriter.WriteEndElement();
            //写入CData信息
            xmlWriter.WriteElementString("年龄", "21");
            xmlWriter.WriteCData("年龄大了");
            //关闭写入
            xmlWriter.WriteEndElement();
            xmlWriter.WriteEndDocument();
            //将缓存中的所有内容刷新到基础流,并同时刷新基础流,也就是操作将写入到Xml
            xmlWriter.Flush();
            xmlWriter.Close();
        }
<?xml version="1.0"?>
<?xml-stylesheet type=‘type/xsl‘ href=‘book.xsl‘?>
<!DOCTYPE 学生[<!ENTITY sex ‘男‘>]>
<!--Xml注释-->
<学生 专业="计算机" 爱好="编程">
  <姓名>王五</姓名>
  <性别>&sex;</性别>
  <年龄>21</年龄><![CDATA[年龄大了]]>
</学生>

下面是使用XmlNodeReader类和XmlTextReader类来读取Xml文档的代码。

public void ReadXml()
        {
            XmlDocument document = new XmlDocument();
            document.Load(@"C:\Users\fyz\Desktop\MyXml.xml");
            XmlNodeReader nodeReader = new XmlNodeReader(document);
            //每次读取一个节点
            while (nodeReader.Read())
            {
                Console.WriteLine(nodeReader.NodeType+"  "+nodeReader.Value);
            }
            Console.WriteLine("\r\n");
            //使用XmlTextReader
            XmlTextReader textReader = new XmlTextReader(@"C:\Users\fyz\Desktop\MyXml2.xml");
            while (textReader.Read())
            {
                Console.WriteLine(textReader.NodeType);
                textReader.MoveToElement();
                Console.WriteLine("Name"+textReader.Name);
                Console.WriteLine("Base URI"+textReader.BaseURI);
                Console.WriteLine("Local Name" + textReader.LocalName);
                Console.WriteLine("value" + textReader.Value);
            }
        }

时间: 2024-08-25 08:30:19

.NET中的XML一的相关文章

C#中使用XML指南之读取XML

? C#中使用XML指南之读取XML ? 访问的两种模型: ? 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题.流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文

MyEclipse中strust.xml代码自动提示

1.首先打开MyEclipse的窗口,选择“Window”菜单下的“Preferences”选项,如图所示 2.在打开的“Preferences”界面中搜索“xml”,选择“XML Catalog”选项,然后选择右边的“Add...”按钮 3.在打开的对话框中,在“location”中输入struts.xml文件所对应的dtd文件的所在位置,最好不要选择有中文的目录,有时候正是因为选择了中文目录,所以没有出现提示. 选择“File System”按钮,找到dtd文件的位置,“E:\struts-

解决struts2中validation.xml配置无效的问题

解决struts2中validation.xml配置无效的问题,我使用了xml的验证,却始终发现无法生效,后面发现才是xml的头文件的格式问题,修改了一下就好了. 成功的xml <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <val

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&

C#.Net中操作XML方法一

我们知道XML是一种可标记性的语言,用来标记数据.定义数据类型,是一种执行用户对自己的标记语言进行定义的源语言.由于结构好.而且easy理解,就好比一棵树,层次关系分明,因此也经常把一些数据存储到XML文件里,以下就说一下怎样在C#中操作XML文件. 经常使用类 XmlDocument:XML的文档.就好比一棵树. XmlNode:XML中的结点类,就好比树枝. XmlElement:XML中元素,就好比树枝上的叶子. 既然我们已经了解这几个经常使用类的,那么让你画一棵树是不是非常easy呢?

delphi中的XML解析控件TXMLDocument的用法

Delphi中TXMLDocument控件的用法 Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面. 在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解. 1<?xmlversion="1.0"encoding="gb2312"?><!--文档版本信息,注释格式同HTML--> 2<XMLPackage> 3<clinetinfoip=”202.1

第五篇:在SOUI中使用XML布局窗口

窗口布局的概念 每一个UI都是由大量的界面元素构成的,在Windows编程,这些界面元素的最小单位通常称之为控件. 布局就是这些控件在主界面上的大小及相对位置. 传统的布局一般使用一个4个绝对坐标来定义一个控件在主窗口的位置.对于窗口是固定大小的界面来说,这种方式是最简单有效的. 然而问题在于在Windows系统上编程,基本上很少有程序的窗口是固定大小的,用户希望它的窗口能够随时调整大小.调整大小后界面里的控件还能够按照一定的规则进行重排. 我自己最讨厌的就是在WM_SIZE里重排控件位置. 随

JavaScript之Ajax-4 XML解析(JavaScript中的XML、Ajax返回并解析XML)

一.JavaScript中的XML XML DOM对象 - IE 浏览器通过 ActiveXObject 对象得到 XML DOM 对象 - 其他浏览器通过 DOMParser 对象得到 XML DOM 对象 XML DOM对象的支持 - XML DOM(XML Document Object Model)定义了访问和操作XML文档的标准方法 - DOM 把 XML 文档作为树结构来查看.能够通过DOM树来访问所有元素 加载并解析XML字符串 二.Ajax返回并解析XML 使用XHR发送XML字

报表XML导出rtf格式,结果在浏览器中打开XML文件。用360浏览器下载rtf文件打开后出现Authentication failed 问题

报表XML导出rtf格式,结果在浏览器中打开XML文件.用360浏览器下载rtf文件打开后出现Authentication failed 问题 直接上问题图: 问题描述:在Oracle EBS中执行"资源事务处理 XML"请求,选择输出rtf格式,完成后查看输出,却在浏览器中打开了XML文件.        提示:需要检查一下是否有对应的模板文件和模板定义有效时间.        解决方案:1. 查看日志. 从中可以看出出错原因,以及模板代码.2. 添加Oracle XML Publi

关于Struts2中struts.xml文件分层问题

没事折腾struts2,遇到异常,浪费好长时间,于是干脆把所有可能的异常都给跑一遍,来个痛快的. 文件的结构 WEB-INF |------configs |-------struts-common.xml |-------struts.xml |------web.xml 遇到的异常: WARNING: Could not find action or result: /Pro_struts2/common/login!preLogin There is no Action mapped fo