XML入门教程.docx
- 文档编号:5947879
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:11
- 大小:19.38KB
XML入门教程.docx
《XML入门教程.docx》由会员分享,可在线阅读,更多相关《XML入门教程.docx(11页珍藏版)》请在冰豆网上搜索。
XML入门教程
XML解析器通常会解析XML文档中所有的文本。
当某个XML元素被解析时,其标签之间的文本也会被解析:
解析器之所以这么做是因为XML元素可包含其他的元素,就像这个例子中,其中的
而解析器会把它分解为像这样的子元素:
转义字符
非法的XML字符必须被替换为实体引用(entityreference)。
假如您在XML文档中放置了一个字符,例如"<",那么这个文档会产生一个错误,这是因为解析器会把它解释为新元素的开始。
因此你不能这样写:
为了避免这个错误,您需要把字符"<"替换为实体引用,就像这样:
在XML中有5个预定义的实体引用:
<
<
小于
>
>
大于
&
&
和号
'
'
省略号
"
"
引号
注释:
严格地讲,在XML中仅有字符"<"和"&"是非法的。
省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。
CDATA
CDATA内部的所有东西都会被解析器忽略。
假如您的文本中包含了大量的"<"和"&"字符-就像编程代码中经常出现的情况一样-那么这个XML元素就可以被定义为一个CDATA部分。
CDATA区段开始于"
[CDATA[",结束于"]]>":
[CDATA[
functionmatchwo(a,b)
{
if(a
{
return1
}
else
{
return0
}
}
]]>
在上面的例子中,在CDATA区段中的所有东西都会被解析器忽略。
关于CDATA区段的注释:
CDATA区段不能包含字符串"]]>",所以,CDATA区段的嵌入是不被允许的。
同时也需要确保在"]]>"字符串中没有空格或折行。
XML入门教程:
服务器上的XML
在服务器上存储XML
XML文件可被存储在服务器上,和HTML文件的存储方式是完全相同的。
启动Windows记事本,并编写以下代码行:
xmlversion="1.0"encoding="ISO-8859-1"?
>
然后把这个文件命名为"note.xml"并保存在您的服务器。
通过ASP生成XML
XML可在不安装任何XML软件的情况下在服务器端生成。
如需从服务器生成XML响应-只需简单地编写以下代码并在服务器上把它保存为一个ASP文件:
<%
response.ContentType="text/xml"
response.Write("
xmlversion='1.0'encoding='ISO-8859-1'?
>")
response.Write("
response.Write("
response.Write("
response.Write("
response.Write("")
%>
请注意,此响应的内容类型必须设置为"text/xml"。
如果您还不懂如何编写ASP,请访问我们的《ASP教程》。
从数据库获取XML
XML可在不安装任何XML软件的情况下从数据库生成。
如需从服务器生成XML数据库响应,只需简单地编写以下代码,并把它在服务器上保存为ASP文件:
<%
response.ContentType="text/xml"
setconn=Server.CreateObject("ADODB.Connection")
conn.provider="Microsoft.Jet.OLEDB.4.0;"
conn.openserver.mappath("/db/database.mdb")
sql="selectfname,lnamefromtblGuestBook"
setrs=Conn.Execute(sql)
rs.MoveFirst()
response.write("
xmlversion='1.0'encoding='ISO-8859-1'?
>")
response.write("
while(notrs.EOF)
response.write("
response.write("
response.write("
response.write("")
rs.MoveNext()
wend
rs.close()
conn.close()
response.write("")
%>
XML入门教程:
向XML文件存储数据
创建并保存XML文件
如果数据要被传送到非Windows平台上的应用程序,那么把数据保存在XML文件中是有好处的。
请记住,XML有很强的跨平台可移植性,并且数据无需转换!
首先,我们将学习如何创建并保存一个XML文件。
下面的这个XML文件将被命名为"test.xml",并被保存在服务器上的c目录中。
我们将使用ASP和微软的XMLDOM对象来创建并保存这个XML文件:
<%
DimxmlDoc,rootEl,child1,child2,p
'创建XML文档
SetxmlDoc=Server.CreateObject("Microsoft.XMLDOM")
'创建根元素并将之加入文档
SetrootEl=xmlDoc.createElement("root")
xmlDoc.appendChildrootEl
'创建并加入子元素
Setchild1=xmlDoc.createElement("child1")
Setchild2=xmlDoc.createElement("child2")
rootEl.appendChildchild1
rootEl.appendChildchild2
'创建XMLprocessinginstruction
'并把它加到根元素之前
Setp=xmlDoc.createProcessingInstruction("xml","version='1.0'")
xmlDoc.insertBeforep,xmlDoc.childNodes(0)
'把文件保存到c目录
xmlDoc.Save"c:
\test.xml"
%>
如果您打开这个被保存的文件,它会使这个样子("test.xml"):
xmlversion="1.0"?
>
真实的表单例子
现在,我们看一个真实的表单例子。
我们首先看一下这个被用在例子中的HTML表单:
下面的HTML表单要求用户输入他们的名字、国籍以及电子邮件地址。
随后这些信息会被写到一个XML文件,以便存储。
"customers.htm":
请输入您的联系信息:
用于以上HTML表单的action被设置为"saveForm.asp"。
"saveForm.asp"文件是一个ASP页面,可循环遍表单域,并把它们的值存储在一个XML文件之中:
<%
dimxmlDoc
dimrootEl,fieldName,fieldValue,attID
dimp,i
'如果有错误发生,不允许程序终止
OnErrorResumeNext
SetxmlDoc=server.CreateObject("Microsoft.XMLDOM")
xmlDoc.preserveWhiteSpace=true
'创建并向文档添加根元素
SetrootEl=xmlDoc.createElement("customer")
xmlDoc.appendChildrootEl
'循环遍历Form集
fori=1ToRequest.Form.Count
'除去表单中的button元素
ifinstr(1,Request.Form.Key(i),"btn_")=0then
'创建field和value元素,以及 id属性
SetfieldName=xmlDoc.createElement("field")
SetfieldValue=xmlDoc.createElement("value")
SetattID=xmlDoc.createAttribute("id")
'把当前表单域的名称设置为id属性的值
attID.Text=Request.Form.Key(i)
'把id属性添加到field元素
fieldName.setAttributeNodeattID
'把当前表单域的值设置为value元素的值
fieldValue.Text=Request.Form(i)
'将field元素作为根元素的子元素进行添加
rootEl.appendChildfieldName
'将value元素作为field元素的子元素进行添加
fieldName.appendChildfieldValue
endif
next
'添加XMLprocessinginstruction
'并把它加到根元素之前
Setp=xmlDoc.createProcessingInstruction("xml","version='1.0'")
xmlDoc.insertBeforep,xmlDoc.childNodes(0)
'保存XML文件
xmlDoc.save"c:
\Customer.xml"
'释放所有的对象引用
setxmlDoc=nothing
setrootEl=nothing
setfieldName=nothing
setfieldValue=nothing
setattID=nothing
setp=nothing
'测试是否有错误发生
iferr.number<>0then
response.write("Error:
Noinformationsaved.")
else
response.write("Yourinformationhasbeensaved.")
endif
%>
注释:
如果被指定的XML文件名已经存在,那个文件会被覆盖!
XML文件会由上面的代码生成,大致的样子是这样的:
("Customer.xml"):
xmlversion="1.0"?
>
XML入门教程:
XMLDHTML行为
语法:
behavior:
url(some_filename.htc)
注释:
behavior属性被IE5以及更高的版本支持,其他所有的浏览器都会忽略它。
这意味着Mozilla、Firefox、Netscape以及其他浏览器只能识别常规的内容,而只有IE5+可以看到DHTMLbehaviors。
实例
下面的HTML文件拥有一个
Mouseoverme!
!
!