新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 如何生成XML数据 - Xml编程 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4891 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 如何生成XML数据 - Xml编程 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     long1123 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:12
      积分:74
      门派:XML.ORG.CN
      注册:2008/9/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给long1123发送一个短消息 把long1123加入好友 查看long1123的个人资料 搜索long1123在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看long1123的博客楼主
    发贴心情 如何生成XML数据 - Xml编程

    5)如何生成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操作是必须的。

                           文章来源  东方标准 http://www.gowinedu.com/ls/Learning/7779.html


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/9/10 17:08:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/2 15:51:53

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms