1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

如何生成XML数据

作者:用户 来源:互联网 时间:2016-09-19 18:01:49

xml文档文件节点动态动态生成命名空间确认生成生成XMl生成XML文件动态生成XMLXML生成动态生成Html元素

如何生成XML数据 - 摘要: 本文讲的是如何生成XML数据,   一、必须弄清楚最终需要的是什么   我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实

  一、必须弄清楚最终需要的是什么

  我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件,比如:http://www.dw8.cn/common/dw8.xml 。也可以为asp文档,比如:http://www.cnbruce.com/blog/rss2.asp

  他们都是XML数据的体现,为了实现XML数据的动态,所以需要使用到动态编程语言,比如ASP来实现生成它。

  二、如何生成动态的XML文档

  如果是生成XML文件,介于动态文档是ASP格式的,所以必须借助FSO进行XML文件的生成,比如:

<%
xmlfile=server.mappath("test1.xml")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(xmlfile,True)
MyFile.WriteLine("<?xml version=""1.0"" encoding=""gb2312""?>")
MyFile.WriteLine("<世界>")
MyFile.WriteLine("<你好>hello,world</你好>")
MyFile.WriteLine("</世界>")
MyFile.Close
%>
<a href="test1.xml">查看XML文件内容</a>

  有关FSO的操作参看
http://www.cnbruce.com/blog/showlog.aspcat_id=26&log_id=440

  如果按照生成动态的XML数据文件来说,则是将MyFile.WriteLine的相关内容在动态文档中通过程式的手段来控制XML节点的名称和值即可。

  三、如何使用动态文档生成XML数据

  那如果不是生成XML文件,直接在动态文档上输出XML数据呢,须声明文件的类型(即Response.ContentType)

<%Response.ContentType = "text/XML"%>

  比如直接浏览如下的动态ASP文档,在浏览器中下则显示为XML数据树

<%
With Response
    .ContentType = "text/XML"
    .write("<?xml version=""1.0"" encoding=""gb2312""?>")
    .write("<世界>")
    .write("<你好>hello,world</你好>")
    .write("</世界>")
End with
%>

  生成的XML文件,其优势就是处理该XML数据的文档可以是静态文档,比如HTML文件通过Javascript、XMLDOM来解析XML,同时也易于数据的保留,而动态文档上的动态XML数据则没有这样有点。不过,在如今动态文档无处不在用的时代,似乎这个优势对于一些应用来说是无甚影响,甚至来说,动态文档的XML数据流反而更具优势:更及时、更动态。

  四、生成XML数据就是这样行了吗?

  无论是通过生成具体的XML文件,还是动态的XML数据流,只要按照XML的格式输出相关XML节点和值就可以了,这样看来XML似乎很简单。但这并没有真正接触到XML的操作。在我们看来,这些XML无非就是一些成对的标签和相关字符组成的数据记录,毫无生命力可言。然而事实上,通过XMLDOM来操作XML则显示了XML的绝对优势(这点在生成XML时优势不明显,却在添加、删除XML节点时体验无限)。

  使用XMLDOM创建XML文档,可使用Save方法生成XML文档,使用createElement方法创建XML元素、createNode创建节点,其实对于XML中的任何标签的创建都可以任意选择其中的一种,不过一般使用createElement创建顶层(根)元素,使用createNode创建子节点(元素),当然createElement和createNode的使用方法也是不同。

<%
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")

Set world=objXMLdoc.createElement("世界")
objXMLdoc.appendChild(world)

Set hello=objXMLdoc.createNode("element", "你好", "")
hello.Text = "hello,world"
objXMLdoc.documentElement.appendChild(hello)

objXMLdoc.Save Server.MapPath("test2.xml")
Set objXMLdoc = Nothing
%>

  CreateObject("Microsoft.XMLDOM") 声明使用XMLDOM对象

  在元素或节点被建立(createElement、createNode)时,其并没有加到文件树中,若要将节点加到文件树中,则需要插入,如appendChild。

  xmlDocument.createNode(type, name, nameSpaceURI) 表示建立一个指定型态、名称,及命名空间的新节点

  type 用来确认要被建立的节点型态,name 是一个字符串来确认新节点的名称,命名空间的前缀则是选择性的。nameSpaceURI 是一个定义命名空间URI 的字符串。如果前缀被包含在名称参数中,此节点会在nameSpaceURI 的内文中以指定的前缀建立。如果不包含前缀,指定的命名空间会被视为预设的命名空间。

  objXMLdoc.createNode("element", "你好", "") 等同于 objXMLdoc.createElement("你好") 4,objXMLdoc.documentElement.appendChild(hello)其实就是XML文档根元素下建立节点,在本例中等同于 world.appendChild(hello),world为本例中的节点名,以此类推。

  所以可以这样来写:

<%
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")

Set world=objXMLdoc.createElement("世界")
objXMLdoc.appendChild(world)

Set hello=objXMLdoc.createElement("你好")
hello.Text = "hello,world"
world.appendChild(hello)

objXMLdoc.Save Server.MapPath("test2.xml")
Set objXMLdoc = Nothing
%>

  需要注意的是,通过XMLDOM生成的XML文件都是UTF-8格式的,这对我们所有应用程序文件的UTF-8化作了很好的推介。

  总结

  生成XML数据,可以使用FSO,如FSO被禁用,可使用XMLDOM,当然还可以直接使用动态文档。不过如果融会贯通地掌握XML的操作,XMLDOM操作是必须的。



以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索xml , 文档 , 文件 , 节点 , 动态 , 动态生成 , 命名空间确认 , 生成 , 生成XMl , 生成XML文件 , 动态生成XML , XML生成 动态生成Html元素 数据库生成xml文件、php生成xml数据、js 生成xml格式数据、hbm.xml生成数据库表、c 数据表 生成 xml,以便于您获取更多的相关知识。

服务器端JSON数据或者xml数据如何存放和设置

问题描述 服务器端JSON数据或者xml数据如何存放和设置 本人初学,正在做关于手机app版本升级这块,手机app要从网上得到app version信息,这就需要用到JSON或者xml。现在问题是我知道JS...

ASP生成XML数据文档

...用到动态编程语言,比如ASP来实现生成它。      二、如何生成动态的XML文档      如果是生成XML文件,介于动态文档是ASP格式的,所以必须借助FSO进行XML文件的生成,比如:      以下是引用片段:         查看XML...

PHP生成和获取XML格式数据

...这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。生成XML格式数据我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name...

获取mysql内容,生成xml文件,并且以webservice形式发送

其实是三个知识点综合到一起的,包括如何访问mysql,如何生成xml文件,如何使用进行webservice开发好了,话不多说,直接粘代码 package com.service;import java.io.FileOutputStream;import java.io.IOException;import java.sql.*;import org.jdom.*;import org.jdom....

学习笔记 如何连接Flex数据

本文和大家重点讨论一下如何连接Flex数据,在Flex中,你可以使用几种方法去操纵和管理数据,它们大多数相关的内容已经超出了在这里进行简要介绍的范围。 连接Flex数据 请记住在Flex应用程序中对数据的操作最重要的事情是:...

前三篇
后三篇
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备