XmlTextWriter创建XML文件

xml|创建

 引言

  随着XML的普及以及在动态WEB应用程序中大量应用,如何通过.NET创建,删除,修改XML文件变的也来也重要了。一个简单的概念是,XML文件跟大的文本文件并没有什么区别,同时它是先于.NET出现,很多ASP的开发者,当他需要程序输出XML文件的时候,通常都是用Response.Write()方法输出为XML文档。

  使用Response.Write()的方式来输出XML文档,并不是一种那么好的方法,首先,我们用这种方法输出字符以组成XML文件的时候,我们会很担心输出的这些字符是不是符合XML规范,不符合XML规范的XML文档将不能得到真确完整的显示,如:<,>,&"",和'这些符号,当它们在XML文件里的出现的时候,我们必须手工查找这些不合规范的字符;再次,当我们需要输出的是一个包含很多名字空间,属性和元素的XML文件的时候,使用Response.Write()方法所必须的代码将会变得冗长以及可读性差。

  幸运的是,.NET FrameWork提供了一个特别为创建XML文件使用的类-System.Xml.XmlTextWriter,使用这个类来创建XML文件,你并不需要担心输出是否符合XML规范的问题,同时代码将会变得非常简洁。在这篇文章中,我们将深入的讲述如何使用XmlTextWriter类来创建XML文件。

  关于XML的说明

  这篇文章假定读者具备一定的XML基础,如果你刚接触XML,我建议你在继续阅读本文之前,首先去看看“什么是XML”和“XML起步”这些资料。

  XmlTextWriter对象简介:

  XmlTextWriter对象包含了很多可用于在创建XML文件时添加元素和属性到XML文件里的方法,比较重要的有:

  WriteStartDocument()-创建XML文件首先就需要用到这个方法,它是在创建XML文件的第一行代码,用来指定该文件是XML文件以及设置它的编码类型;

  WriteStartElement(string)-这个方法的作用是在XML文件中创建新元素,你可以通过String参数设置元素的名称(当然了,你还可以使用optional关键字指定一个可选的参数);

  WriteElementString(name, text_value)-如果你需要创建一个除了字符,什么也没有的(如不嵌套元素)的元素,你可以使用该方法;

  WriteEndElement()-对应WriteStartElement(string)方法,作为一个元素的结尾;

  WriteEndDocument()-XML文件创建完成后使用该方法结束;

  Close()-关闭所有的文本流,把创建的XML文件输出到指定位置。

  使用XmlTextWriter对象创建XML文件,需要在类构造器中指定文件的类型,而且编码类型必须是System.Text.Encoding,如:System.Text.Encoding.ASCII, System.Text.Encoding.Unicode及System.Text.Encoding.UTF8,在XmlTextWriter类构造器指定为何种类型,在输出XML文件将以那种流文件形式输出。

  使用XmlTextWriter对象创建一个简单的XML文件

  接下来,我们示范一下如何使用XmlTextWriter对象来创建一个简单的XML文档,并把它保存到指定的位置,这个XML文件将包含访问该文件的用户的相关信息,它的输出格式如下:

<userInfo>
<browserInfo>
<urlReferrer>URL referrer info</urlReferrer>
<userAgent>User agent referrer info</userAgent>
<userLanguages>languages info</userLanguages>
</browserInfo>
<visitInfo timeVisited="date/time the page was visited">
<ip>visitor's IP address</ip>
<rawUrl>raw URL requested</rawUrl>
</visitInfo>
</userInfo>

  选用这个有这种结构的XML文件为输出对象,是为了可以在这里使用所有先前讲过的方法,方便阐述。
如下便是创建该XML文件所需的ASP.NET代码:

<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>
<script language="C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
// Create a new XmlTextWriter instance
XmlTextWriter writer = new
XmlTextWriter(Server.MapPath("userInfo.xml"), Encoding.UTF8);

// start writing!
writer.WriteStartDocument();
writer.WriteStartElement("userInfo");

// Creating the <browserInfo> element
writer.WriteStartElement("browserInfo");

if (Request.UrlReferrer == null)
writer.WriteElementString("urlReferrer", "none");
else
writer.WriteElementString("urlReferrer",
Request.UrlReferrer.PathAndQuery);

writer.WriteElementString("userAgent", Request.UserAgent);
writer.WriteElementString("userLanguages",
String.Join(", ", Request.UserLanguages));
writer.WriteEndElement();

// Creating the <visitInfo> element
writer.WriteStartElement("visitInfo");
writer.WriteAttributeString("timeVisited", DateTime.Now.ToString());
writer.WriteElementString("ip", Request.UserHostAddress);
writer.WriteElementString("rawUrl", Request.RawUrl);
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}

  首先我们要注意是否有导入System.Xml and System.Text命名空间,然后我们在Page_Load事件中创建一个XmlTextWriter对象实例,并且指定创建的XML文件保存为userInfo.xml文件和它的编码类型为UTF8(a translation of 16-bit unicode encoding into 8-bits),然后使用WriteStartElement(elementName)方法来创建嵌套了其他元素的元素,并以WriteEndElement()作为结束,此外,我们使用WriteElementString(elementName, textValue)方法来创建最底层即没有嵌套其他元素的元素。

  在浏览器窗口中输出XML文件

  先前的例子示范了如何使用XmlTextWriter对象创建xml文件以及把它保存为一个文件,这个文件可能是你所需要的,但是有时候,我们需要把创建的XML文件在浏览器上显示出来,这个时候,我们可以使用上例代码创建userInfo.xml文件,然后打开它,再使用Response.Write()把它输出,但是这种方法并不是很好。

  一个好的方法是立即把XmlTextWriter对象的结果显示在浏览器上,要实现这个功能非常地容易,只需要在上例的代码基础上修改一行代码就可以了,在XmlTextWriter的类构造器中,我们不指定为一个文件路径,而是指定为Response.OutputStream,以使ASP.NET程序直接输出XML流到浏览器中,而不是保存为一个文件,当然了,你还可以设定<@ Page ... >指令中的MIME类型为text/xml来实现同样的功能,但是我建议你不要用这种方法来实现,因为有些浏览器不认得该格式而把它当做html来解释(它将蕴藏所有的xml元素,并删除所有的空格)。

  下面列出了上例修改后的部分代码,修改过的代码将一些粗体显示:

<@ Page ContentType="text/xml" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>
<script language="C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
// Create a new XmlTextWriter instance
XmlTextWriter writer = new
XmlTextWriter(Response.OutputStream, Encoding.UTF8);

// start writing!
...
}

  注意,尽管你访问的是asp.net Web页面,但是你查看该实例所看到的仅仅是XML文档,这个文档跟先前创建的XML文件是一样的,所不同的是,先前是保存为一个XML文件userInfo.xml。

  总结

  本文示范了在.NET Framework中如何使用System.Xml.XmlTextWriter类来创建XML文件,XmlTextWriter对象可以创建一个XML文件,并把它保存到指定位置,也可以直接以指定的流形式显示在浏览器上,在很多编码工作中,使用XmlTextWriter对象构建基于XML的程序会有很多的优势,其中主要有可以使代码更加简洁,更具可读性,同时不用担心输出的XML文件是否符合规范。

 

时间: 2024-09-18 21:09:07

XmlTextWriter创建XML文件的相关文章

使用Javascript创建XML文件

javascript|xml|创建  在客户端创建XML文件可以使用FileSystemObject (FSO) 对象或直接使用XML Document Object Model (DOM).若使用FSO则客户端必须安装 Window Script 5.5,使用XML DOM则需要在客户端安装有Microsoft XML Core Services.安全性方面需要在IE的安全设置中启用ActiveX控件. 1.使用FSO创建XML文件 使用FSO对象的GetSpecialFolder方法获得要创

android studio-Android Studio 怎么在drawable里创建xml文件

问题描述 Android Studio 怎么在drawable里创建xml文件 解决方案 右键>New>Android Xml File 解决方案二: 在对应的文件夹里新建xml文件,adroidstudio会自动加载到project里 解决方案三: 啥意思?右键new一个,不行? 解决方案四: 谢谢大家,知道怎么弄了.

asp.net创建XML文件的方法小结_实用技巧

本文实例讲述了asp.net创建XML文件的方法.分享给大家供大家参考,具体如下: 方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的 方法二:直接定影XML文档,然后保存到文件. 通过"XmlDocumen

C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)

C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件.增删改查xml文件节点信息)     http://www.cnblogs.com/mingmingruyuedlut/archive/2011/01/27/1946239.html    修改了一下里面一部分             try            {                //定义并从xml文件中加载节点(根节点)                XElement rootNode = XElement.L

c# 创建xml文件 命名空间问题

问题描述 利用c#创建如下xml文件,如何生成如下格式文件?<?xmlversion="1.0"encoding="utf-8"?><Databasexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.staubli.com/robotics/VAL3/Data/2"><Datas><Datana

关于dom4j创建xml文件疑问

问题描述 importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.

创建带有关联的 XML 架构的 XML 文件

xml|创建|架构 一.创建带有关联的 XML 架构的 XML 文件 1.创建新的 Windows 应用程序项目 首先需要在 Visual Basic 或 Visual C# 中创建新的 Windows 应用程序.创建一个新项目并将其命名为"XMLCustomerList" ,从"文件"菜单中指向"新建",然后单击"项目"以显示"新建项目"对话框. 根据要使用的语言,在"项目类型"窗格中

【java开发系列】—— JDOM创建、修改、删除、读取XML文件

有很多中操作XML文件的方法,这里介绍一下JDOM的使用方法和技巧. JDOM下载地址 创建XML文档 XML文件是一种典型的树形文件,每个文档元素都是一个document元素的子节点.而每个子元素都是一个Element对象,对象可以向下包含. 1 因此我们可以通过先创建元素再将元素添加到父元素中,最后将顶层元素添加到根元素中. 2 创建完文档元素后,就可以把元素添加到document对象中,然后写入文件. 主要使用的函数: Element.setAttribute 为元素添加信息 Elemen

将关系系数据库转化为xml文件的通用程序

xml|程序|数据|数据库  总是在网络上copy别人的源代码,今天我也贴出自己今天写的源码,相信这个程序会对大家在平时的工作中需要频繁从数据库中提取数据转化成xml文件会有帮助.    最近公司项目中有一件事就是从数据库表中读出数据,然后转换成xml文件供客户端下载,由于数据库中表太多,不可能为单独的每个表都写一个转换程序.于是,经过分析,写了一个通用的用ResultSet对象转换成xml文件的程序.这样,只需把查询结果集(ResultSet对象)和要生成的xml文件的路径传入,然后自己指派属