ASP生成XML
- 格式:doc
- 大小:35.00 KB
- 文档页数:9
xml常规应用之asp读写文档本站整理网络搜集 2008-07-07 点击:75 字体:大中小我要评论xml一个简单的新闻发布系统的说起:首先,我们建立一个XML文档,命名为nnDB.xml:---------------------------------------nnDB.xml---------------------------------------<?xml version="1.0" encoding="GB2312"?><data><news></news></data>---------------------------------------nnDB.xml---------------------------------------接着,做一个发布的页面,这个发布页面连带了有新闻的显示列表,把他命名为post.asp 吧!---------------------------------------post.asp---------------------------------------<style>#news_list { width: 430px; float: left; border: 1px solid #CFCFCF; }#tt { width: 300px; float: left; border-top: 2px solid #CFCFCF; }#pt { width: 129px; float: right; border-top: 2px solid #CFCFCF; }#ct { width: 430px; float: left; border-top: 1px solid #CFCFCF; }#news_list li span { font-size: 12px; letter-spacing: 1px; font-family: Tahoma; }#c1 { width: 40px; float: left; padding: 5px 0px 5px 0px; background-color: #EFEFEF; font-weight: bold; color: #666; text-align: center; border: 1px solid#FFF; }#c2 { float: left; padding: 5px; font-size: 12px; color: #333; text-align: center; letter-spacing: 1px; border: 1px solid #FFF; }#c3 { width: 380px; float: right; margin: 0px 5px 0px 5px; padding: 3px 0px 3px 0px; text-align: right; color: #CCC; border-top: 1px dotted #CFCFCF; } </style><%Set XMLOBJ = Server.CreateObject("Microsoft.XMLDOM")XMLOBJ.async = FalseXMLOBJ.load Server.MapPath("nnDB.xml")Set news_root = XMLOBJ.documentElement.selectSingleNode("news")news_count = news_root.childNodes.lengthHTML_CODE = "<div id=""news_list"">"for i = 0 to news_count - 1Set temp_news = news_root.childNodes.item(i).childNodesHTML_CODE = HTML_CODE & "<li id=""tt""><span id=""c1"">标题</span><span id=""c2"">" & temp_news.item(3).text & "</span></li><liid=""pt""><span id=""c1"">作者</span><span id=""c2"">" &temp_news.item(4).text & "</span></li>"HTML_CODE = HTML_CODE & "<li id=""ct""><span id=""c1"">内容</span><span id=""c2"">" & temp_news.item(5).text & "</span><spanid=""c3"">发表时间:" & temp_news.item(2).text & "点击量:" &temp_news.item(6).text & "</span></li>"nextHTML_CODE = HTML_CODE & "</div>"Response.write HTML_CODE%><form id="form1" name="form1" method="post" action="save_DB.asp"> <p>新闻标题:<input type="text" name="tt" /></p><p>新闻作者:<input type="text" name="pt" /></p><p>新闻内容:<textarea name="ct" cols="50"rows="12"></textarea></p><p><input type="submit" name="Submit" value="提交" /><inputtype="reset" name="Submit2" value="重置" /></p></form>---------------------------------------post.asp---------------------------------------最后就是save_DB.asp,写入XML的页面:---------------------------------------save_DB.asp---------------------------------------<%' tt 作者pt 发布人ct 新闻内容tt = trim(Request.Form("tt")) ' trim 去空格pt = trim(Request.Form("pt"))ct = trim(Request.Form("ct"))time_now = now()' 抓时间,作为新闻条目的区别检索D_y = year(time_now)D_m = month(time_now)D_d = day(time_now)D_hr = hour(time_now)D_mi = minute(time_now)D_se = second(time_now)' PS:为何要用日期时间做新闻区别呢?我们假设,这个发布后台,只有你一个人可以访问,那么可以肯定一样东西:同一时间内,只可能发布一篇文章。
一种基于ASP生成动态XML的方法
李文敬
【期刊名称】《电脑与信息技术》
【年(卷),期】2003(011)001
【摘要】文章介绍了ASP与XML的技术特点以及OLE-DB接口的结构体系.对一种基于ASP生成动态XML的方法进行了探讨.
【总页数】4页(P15-17,32)
【作者】李文敬
【作者单位】广西师范学院信息技术系,530001
【正文语种】中文
【中图分类】TP393
【相关文献】
1.一种通用XML数据岛动态生成和数据绑定方法 [J], 张文学
2.一种基于操作集计算生成有效XML文档的方法 [J], 卑小贤;陈平;刘西洋
3.一种基于XML的数据库动态建模方法在工程飞行模拟器中的应用研究 [J], 范丹丹;刘涛
4.一种基于XML的软件动态演化方法 [J], 李申莉;王振宇;王亮;方木云
5.一种新的基于素数的XML动态编码方法 [J], 田帅;秦拯
因版权原因,仅展示原文概要,查看原文内容请购买。
sap 内表转xml标准方法在SAP中,将内表转换为XML有多种标准方法。
以下是其中一种常用的方法:1. 使用ABAP代码:您可以使用ABAP代码来将内表转换为XML。
首先,您需要定义一个内表并填充它。
然后,您可以使用ABAP的XML转换功能将内表转换为XML格式。
下面是一个简单的示例代码:DATA: xml_writer TYPE REF TO cl_sxml_string_writer,。
xml_document TYPE REF TO if_ixml,。
xml_string TYPE string,。
lt_data TYPE TABLE OF your_structure.填充内表 lt_data.创建XML Writer.CREATE OBJECT xml_writer.CREATE OBJECT xml_document.将内表转换为XML.CALL TRANSFORMATION id.SOURCE data = lt_data.RESULT XML xml_string.设置XML文档。
CALL METHOD cl_ixml=>create. EXPORTING.string = xml_string.RECEIVING.document = xml_document.输出XML.DATA(output) = xml_document->create_out_string( ).WRITE output TO 'your_file_path.xml'.在上面的示例中,您需要将"your_structure"替换为您内表的结构名称,"lt_data"替换为您的内表名称,"id"替换为您的转换规则的ID,"your_file_path.xml"替换为您想要保存XML文件的路径。
除了上面提到的方法,您还可以使用SAP提供的其他内置功能或者第三方工具来实现内表转换为XML的功能。
ASP XML实例
在前面介绍了如何使用DOM操作HTML文档,在本节在JavaScript中通过创建Msxml2.DOMDocument对象,来实现加载并显示一个XML文档的操作。
首先创建Msxml2.DOMDocument对象。
微软提供了MSXML控件来支持XML 操作,目前MSXML从旧到新有以下几个版本:
●Microsoft.XmlDom
●MSXML2.DOMDocument
●MSXML2.DOMDocument.3.0
●MSXML2.DOMDocument.4.0
●MSXML2.DOMDocument.5.0
接下来了解实例中用到的XML文件emp.xml,它保存的是员工信息,该文件的代码如下所示:
ee的属性name、节点job及节点salary分别代表员工的姓名、职业及工资。
该文件
在上述代码中,由于body标记中加入了“onLoad="loadXML()"”,所以在加载
接口读取XML文档信息,并利用这些信息形成一个新的员工信息表格,并呈现出来。
这里makeTable函数就是实现员工信息表的创建与呈现。
另外,读者也许会注意到了按钮“添加”的事件onclick="addRow()",其中函数addRow()用于当用户输入会员信息,单击“添加”按钮后将该会员信息在下面的表中显示出来。
该实例的呈现效果如图6-13所示。
图6-13 使用DOM操作XML文档。
创建XML⽂件⽅法⽅法⼀:按照XML的结构⼀步⼀步的构建XML⽂档.通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的⽅法⼀:按照XML的结构⼀步⼀步的构建XML⽂档.通过.Net FrameWork SDK中的命名空间"System.Xml"中封装的各种类来实现的⽅法⼆:直接定影XML⽂档,然后保存到⽂件。
通过"XmlDocument"类中的"LoadXml"⽅法.aspx前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div><asp:Button ID="btn" runat="server" OnClick="btn1_OnClick" Text="创建xml的第⼀种⽅法" /><br /><asp:Button ID="btn2" runat="server" OnClick="btn2_OnClick" Text="创建xml的第⼆种⽅法" /></div></form></body></html>.cs后台代码实现如下:using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Text;using System.Xml;public partial class Default4 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}//创建xml⽂件⽅法⼀protected void btn1_OnClick(object sender, EventArgs e){XmlText xmltext;XmlDocument xmldoc = new XmlDocument();//加⼊XML的声明段落XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);xmldoc.AppendChild(xmlnode);//加⼊⼀个根元素XmlElement xmlelem = xmldoc.CreateElement("", "bookstore", "");xmltext = xmldoc.CreateTextNode("");xmlelem.AppendChild(xmltext);xmldoc.AppendChild(xmlelem);//加⼊⼀个⼦元素XmlElement xmlelem1 = xmldoc.CreateElement("", "book", "");xmltext = xmldoc.CreateTextNode("");xmlelem1.AppendChild(xmltext);//为⼦元素"book"增加两个属性xmlelem1.SetAttribute("genre", "", "fantasy");xmlelem1.SetAttribute("ISBN", "2-3631-4");xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1);//创建三个⼦元素的⼦元素XmlElement xmlelem2 = xmldoc.CreateElement("", "title", "");xmltext = xmldoc.CreateTextNode("Oberon's Legacy");xmlelem2.AppendChild(xmltext);xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem2);XmlElement xmlelem3 = xmldoc.CreateElement("", "author", "");xmltext = xmldoc.CreateTextNode("Corets, Eva");xmlelem3.AppendChild(xmltext);xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem3);XmlElement xmlelem4 = xmldoc.CreateElement("", "price", "");xmltext = xmldoc.CreateTextNode("5.95");xmlelem4.AppendChild(xmltext);xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem4);xmldoc.Save(Server.MapPath("bookstore.xml")); //保存}//创建xml⽂件⽅法⼆protected void btn2_OnClick(object sender, EventArgs e){XmlDocument xmldoc = new XmlDocument(); //创建空的XML⽂档xmldoc.LoadXml("<?xml version='1.0' encoding='gb2312'?>" +"<bookstore>" +"<book genre='fantasy' ISBN='2-3631-4'>" +"<title>Oberon's Legacy</title>" +"<author>Corets, Eva</author>" +"<price>5.95</price>" +"</book>" +"</bookstore>");xmldoc.Save(Server.MapPath("bookstore2.xml")); //保存}}⽐较:第⼀种创建起来更加灵活,⽽第⼆种创建起来更加⽅便。
ASP 创建工资XML文档
本扩展练习的目的是:创建一个工资信息的XML文档。
根据本章中所介绍的XML内容,保证创建的XML文档都包含XML声明并且格式是正确的。
(1)创建一个命名为Wage.xml的HTML页面,用来实现用户注册信息的填写。
左键单击【文件】|【新建】命令,弹出【新建文档】对话框,在对话框的【文件类型】中选择【XML】,单击【创建】按钮。
(2)左键单击【文件】|【保存】命令,弹出另存为对话框。
在对话框的【文件名】中输入Wage.xml,【保存类型】的下拉列表框中选择“ALL Documents”,单击【保存(S)】按钮。
(3)在XML文件中输入以下代码并保存。
(4)在浏览器中打开Wage.XML文件,如图6-9所示。
图6-9 执行结果。
flashas3⽣成XML⽂件实现程序as3.0创建xml的⼏种⽅式xml的数据在读⼊的时候是作为字符串处理的,所以可以⽤这这种⽅法来构造⼀个xml⽂件复制代码代码如下:var xmlstring:String="<a><b>wang</b><c>chun</c><d>lei</d></a>";var myxml:XML=new XML(xmlstring);trace(myxml.b);当然也可以不通过字符串来构造xml数据复制代码代码如下:var myxml:XML=new XML(<a><b>wang</b><c>chun</c><d>lei</d></a>);trace(myxml.b);当然您可以⽤外部xml⽂件来创建实例复制代码代码如下:var ids:Array = ["background", "photoArea", "thumbnail"];var names:Array = [["0","0","1.jpg"], ["0","0","2.jpg"], ["0","0","3.jpg"]]//定义2个数组来给节点和属性赋值var d:XML = new XML("<demo type='album'></demo>");//XML根节点for (var i:int = 0; i < 3; i++){var newnode:XML = new XML();newnode =<component type={ids[i]}>//读取数组,属性赋值<property x={names[i][0]} y={names[i][1]}></property>//读取数组,属性赋值<info url={names[i][2]}></info>//读取数组,属性赋值</component>;d = d.appendChild(newnode)//注意这个⽅法来添加⼀个节点}trace(d)//这⾥输出构造完毕的XML结果复制代码代码如下:<demo type="album"><component type="background"><property x="0" y="0"/><info url="res/bg.swf"/></component><component type="photoArea"><property x="320" y="280"/><info url="res/pa.swf"/></component><component type="thumbnail"><property x="580" y="10"/><info url="res/th.swf"/></component></demo>。
ASP 创建XMLHttpRequest对象在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript 创建一个XMLHttpRequest对象。
由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法创建XMLHttpRequest的实例。
由于浏览器之间的差异,JavaScript代码中必须包含有关的处理,从而使用Act ive X技术或者使用本地JavaScript对象技术来创建XMLHttpRequest的一个实例。
但是,并不需要针对每个浏览器详细编写代码来区别浏览器类型。
要创建一个XMLHttpRequest对象的实例,需要做的只是检查浏览器是否提供对Active X对象的支持。
如果浏览器支持Active X对象,就可以使用Active X来创建XMLHttp Request对象。
下面代码演示了使用JavaScript代码来编写跨浏览器的XMLHttpRequest对象实例,代码如下所示:false。
然后,在Create_XMLHttpR( )函数中,实例化ActiveXObject对象,并判断浏览器。
如果版本小于5,则捕获到错误,并通过老版本的ActiveX对象,再进行实例化。
如果再次捕获到错误信息时,则将xmlhttp赋值为false。
此时,判断条件是否为真,如条件为真则会把XMLHttpRequest实现为一个本地JavaScript对象创建并返回。
由于JavaScript具有动态类型特性,而且XMLHttpRequest在不同浏览器上的实现兼容的,所以可以用同样的方式访问XMLHttpRequest实例的属性和方法,而不需要考虑实例创建的方法。
这就大大简化了开发过程,而且在JavaScript中也不必编写特定于浏览器的逻辑处理。
ASP 根据数据库数据,创建XML文件
下面再通过一个简单的实例,来实例Ajax的应用。
该实例,通过触发按钮,则自动提取数据库中的数据,并确认后生成XML文件。
文件名:toXML.html
该文件主要通过单击【getXML】按钮,则通过Ajax技术实现无刷新方式提取
文件名:new_xml.asp
该文件主要用来接收XmlHttpRequest对象打开该文件,实现输出XML文件的
文件名:create_XML.asp
最后,通过Ajax回调内容,即将new_xml.asp文件中输出的内容赋予一个变量,
现在,执行上述代码,则显示一个“loading…”和一个【getXML】按钮,如图7-10所示。
然后,单击【getXML】按钮,将显示从数据库中提取的内容,如图7-11所示。
图7-10 显示等待内容图7-11 显示提取的内容在弹出的提示信息框中,单击【确定】按钮,即可生成XML文件,如图7-12所示。
最后,在弹出的“创建XML文件成功!”信息框中,单击【确定】按钮,即可在该文件目录中查看已经创建Xml.xml文件,如图7-13所示。
图7-12 创建成功图7-13 查看所成生的xml文件。
<%' 示例:' 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("xml/bcastr.xml")' Set objXMLdoc = Nothingxmlfile=server.mappath("xml/test1.xml")Set fso = CreateObject("Scripting.FileSystemObject")Set MyFile = fso.CreateTextFile(xmlfile,True)MyFile.WriteLine("<?xml version=""1.0"" encoding=""utf-8""?>") MyFile.WriteLine("<bcaster autoPlayTime=""3"">")MyFile.WriteLine("<item item_url=""images/01.jpg""></item>") MyFile.WriteLine("</bcaster>")MyFile.Close%>一、必须弄清楚最终需要的是什么我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件。
也可以为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>如果按照生成动态的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操作是必须的。