首页 > 语言 > 关键词  > 正文

编程:如何生成XML数据

2007-05-04 09:50 · 稿源:

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

我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件,比如:https://www.dw8.cn/common/dw8.xml 。也可以为asp文档,比如:https://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的操作参看

https://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操作是必须的。

举报

  • 相关推荐
  • 专家盛赞GEO双引擎系统:生成式引擎优化以旋律诠释自身

    GEO双引擎系统主题曲《GEO双引擎系统之歌》开创了技术主题音乐创作先河,通过独特艺术形式诠释生成式引擎优化技术内核。该作品由汤祎飞创立的GEO系统创新生成,融合科技与艺术边界,获科技界、产业界和学术界广泛关注。多位顶级专家盛赞其开创性价值,认为该曲有效突破技术传播壁垒,为产业生态提供了兼具深度与温度的认知桥梁。歌曲以"双引擎驱动未来"为�

  • 美乘客疑拍到超清晰UFO 喷气后消失:网友认为是AI生成

    ​近日,一则关于美国乘客在航班上拍摄到超清晰不明飞行物(UFO)的视频在网络上引发了广泛关注和热议。据视频显示,这起事件发生在从拉斯维加斯飞往西雅图的航班上,一名乘客在万米高空意外捕捉到了令人震惊的画面:一个圆盘状飞行物以稳定轨迹飞行,随后突然加速并喷出蓝色尾焰,在短短0.5秒内完全消失于云层之中。 该视频迅速在网络上发酵,登上社交媒体热搜�

  • 数据库就要选华为云!

    文章讲述了作者10年前创业失败的经历,反思当时过度投入高端服务器和技术架构,却忽视了业务实际需求。如今随着云计算、大数据等技术发展,数据库架构设计更强调弹性、可靠性和智能化。游戏行业作为典型高并发场景,对数据库提出实时响应、高可用等严苛要求。华为云TaurusDB作为新一代云原生数据库,具备高性能(QPS达百万级)、弹性扩展(1写15读节点)、高可靠性(跨区部署、RPO为0)等优势,完美适配游戏行业需求。其核心技术包括计算存储分离、并行执行和NDP近数据处理,解决了传统MySQL架构的复制延迟等问题。文章建议企业选择与业务协同成长的数据库平台,而非从零搭建架构。

  • AI CRM如何跨越落地鸿沟?场景驱动与数据闭环成关键

    销售易发布中国首款AI CRM产品NeoAgent,标志着CRM行业进入智能化变革。该产品基于腾讯混元大模型+DeepSeek开源模型,提供多场景智能解决方案。AI CRM的核心价值在于数据驱动,通过构建统一客户数据平台,实现销售全流程智能化。目前已在客户服务、销售助理等场景落地,其中销售助理Agent可提升70%事务性工作效率。企业应用AI需关注数据基础与场景适配性,销售易通过"场景需求-产品供给-使用反馈-快速迭代"的闭环模式,推动AI CRM持续进化。在Agentic AI时代,数据能力成为企业智能化转型的关键竞争力。

  • 空调企业扎堆火焰山,自己的实测数据如何?

    今年夏季全国多地遭遇极端高温天气,空调制冷能力成为选购关键。新疆吐鲁番火焰山凭借45℃以上高温和80℃地表温度,成为空调高温性能测试的理想场所。海尔、格力、TCL、小米等品牌纷纷在此进行测试:海尔空调在72.5℃高温下稳定运行;格力在65.6℃外机温度下保持室内27.7℃;TCL在60℃地面温度下正常制冷;小米空调在48℃高温下连续运行90天。各品牌通过极限测试验证产品高温制冷能力,消费者可根据实际需求选择。

  • 深信服超融合智能运维实战|数据库卡慢处置的一次关键事件

    西南某线缆制造企业基于深信服超融合平台运行Oracle RAC数据库,面临业务扩展期IT运维人力紧张、预算有限且缺乏专业DBA的困境。企业部署了400核CPU、6TB内存资源,运行120+台虚拟机承载OA、财务、生产管理、ERP等核心系统。主要问题包括:数据库性能监控不足,频繁出现卡慢现象;内存不足导致大量使用Swap,SGA缓存命中率仅67%;PGA内存消耗达上限。通过智能运维服务诊断发现系统内存配置不合理,建议方案包括:扩容虚拟机内存至220GB以上;配置大页内存;调整数据库文件系统IO策略为direct I/O;优化SGA为160G、PGA为20G。实施后数据库性能显著提升,运维效率提高60%以上,故障修复时间缩短50%。该案例展示了智能运维在资源优化、性能诊断方面的价值,助力企业突破传统运维困境。

  • 告别“数据录入机器”:ToB智能体如何让CRM回归业务本质

    2025年腾讯全球数字生态大会上,销售易推出首款AI CRM产品NeoAgent,基于大模型技术重构企业销售流程。该产品通过语音指令自动完成客户拜访规划、关联历史数据并生成策略建议,实现从菜单点击到自然对话的交互变革。销售易通过"三阶跃迁"模式:解放双手的语音转结构化记录、突破菜单层级的智能检索、结合销售方法论的场景赋能,深度重构CRM系统。产品依托统一数据平台,实现多模态信息整合与权限管控,采用混合模型架构平衡响应速度与决策质量。目前已在米其林等企业应用中显著提升销售转化率,并通过"用户+流量"混合收费模式验证商业化路径。这标志着ToB领域AI正从效率工具向"数字同事"进化,其核心价值在于理解业务、适配场景并创造增量。

  • KTV用AI生成的MV惊现骷髅:顾客直呼“辣眼睛” 门店回应可切换

    ​近日,多名消费者在社交平台发帖吐槽魅KTV新上线的AI视频功能,称其生成的抽象画面严重破坏K歌体验。 走访多家魅KTV门店发现,部分门店已全面启用该AI系统。某门店工作人员透露,系统更新后所有歌曲默认播放AI生成视频,“但90%的顾客都会要求切换回原版MV,包厢服务人员可现场操作”。另一未更新系统的门店则表示,顾客仍可正常观看原唱MV。

  • 男子编造2岁女儿被抱走遭处罚:为博关注 由AI大模型生成

    近日,一则细节详尽的“2岁女儿王喵喵被抱走”的寻人启事在网络上疯狂传播,引发超百万次点击与大量转发,众多网友纷纷加入转发助力寻找的行列。 启事中描述走失者王喵喵为2岁女性,眼睛大大的,笑时会露出两颗小虎牙,在嘉兴市南湖区新丰镇乌桥超市被一大妈抱走,还附上了“父亲”与“母亲”的联系电话,字里行间满是焦灼,让人感觉是心急如焚的家长发出的求�

  • 蓝耘元生代MaaS × Kimi K2 × Claude CodeUI,开启编程效率革命

    蓝戟元生代MaaS平台推出"Kimi K2×Claude CodeUI"AI编程解决方案,通过国产首个万亿参数MoE架构开源模型Kimi K2驱动Claude Code,实现本地化部署。该方案具有三大优势:1)成本直降90%,免翻墙使用;2)支持128K超长上下文处理,编程能力超越主流模型;3)提供600万token免费额度。平台采用交互式界面设计,支持移动端操作和WebSocket通信,集成文件管理、Git工具和会话追踪功能,�