读取节点:selectSingleNode("nodename")//nodename为节点名。
读取属性:attributes.getNamedItem("attribute")//attribute为节点中所">

asp中读取xml以及Utf-8和Gb2312乱码问题

80酷酷网    80kuku.com

  xml|问题

asp中创建xml对象通常使用:CreateObject("Microsoft.XMLDOM")
读取节点:selectSingleNode("nodename")//nodename为节点名。
读取属性:attributes.getNamedItem("attribute")//attribute为节点中所具有的属性名。
加载xml; load(Server.MapPath("data.xml"))
async 属性表示是否允许异步的下载。
 
引用:
<%LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Response.Charset="UTF-8"%>
<html>
<title>read xml</title>
<body>
<%
dim node,i,nodecount
set Doc = CreateObject("Microsoft.XMLDOM")
Doc.async = false
Doc.load(Server.MapPath("data.xml"))
set root = Doc.documentElement
set nodeLis = root.childNodes
nodeCount = nodeLis.length
For i=1 to nodeCount
set node = nodeLis.nextNode()
set cost = node.attributes.getNamedItem("cost")
%>
第 <%=i%> 条记录:
<table border="1">
<tr>
<td width="16" rowspan="2"><img src="<%=node.selectSingleNode("img").text%>"/></td>
<td width="17">书名</td>
<td width="48">出版社</td>
<td width="32">价格</td>
</tr>
<tr>
<td>
<%=node.selectSingleNode("name").text%>
</td>
<td>
<%=node.selectSingleNode("publisher").text%>
</td>
<td>
<%= cost.text%>
</td>
</tr>
</table>
<%
Next
%>
</body>
</html>

XML
引用:
<?xml version="1.0" encoding="utf-8"?>
<data>
<book cost="56">
<name>Dreamweaver</name>
<publisher>上海科技出版社</publisher>
<img>img/dw.jpg</img>
</book>
<book cost="62">
<name>Flash</name>
<publisher>铁道出版社</publisher>
<img>img/flash.jpg</img>
</book>
<book cost="48">
<name>Firweorks</name>
<publisher>教育出版社</publisher>
<img>img/fw.jpg</img>
</book>
</data> 
 
Utf-8和Gb2312乱码问题的终结
研究好多天了,也试过好多办法了,总结出目前发现最好的方法:
先说一下基本的东西:
<% codepage=65001%>UTF-8
<% codepage=936%>简体中文
<% codepage=950%>繁体中文
<% codepage=437 %>美国/加拿大英语

<% codepage=932 %>日文
<% codepage=949 %>韩文
<% codepage=866 %>俄文

codepage指定了IIS按什么编码读取传递过来的串串(表单提交,地址栏传递等)。

出乱码的原因也就是网站要整合的时候模块编码不一样引起的。
就像我的博客一样,整合的时候都会出这个问题,因为BLOG是Utf-8的,
近来很多网友都在为这个问题咨询,我尝试了很多种方法。
最方便的方法如下:
不要转换任何模块网页的编码该utf-8的还是utf-8,该Gb22312的还是Gb2312
在Utf-8模块的包文件(如conn.asp,但是要注意conn.asp必须是在第一行调用)最前面加上
<%LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
在GB2312模块的包文件最前面加上
<%LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
其他编码的类推。

asp读写xml
<%    
  '----------------------------------------------------------------    
  '程序简介:   完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看    
  '入口参数:   无    
  '出口参数:   无    
  '------------------------------------------------    
  '函数名字:ConnectXml()    
  '入口参数:   filename   需要连接或打开的xml文件名    
  '出口参数:   无    
  '返回值   :ConnectXml=0,XMLMorntekDocument就是一个成功装载XML文档的对象了。    
  '   ConnectXml<>0,则打印错误信息strError    
  '------------------------------------------------    
  dim   XMLMorntekDocument    
   
  function   ConnectXml(filename)    
  dim   strSourceFile    
  strSourceFile   =   Server.MapPath(filename)    
  Set   XMLMorntekDocument   =   Server.CreateObject("Microsoft.XMLDOM")      
  XMLMorntekDocument.async   =   false      
  XMLMorntekDocument.load(strSourceFile)    
  ConnectXml=XMLMorntekDocument.parseerror.errorcode    
  if   XMLMorntekDocument.parseerror.errorcode<>0   then    
  strError="<h2>error"&XMLMorntekDocument.parseerror.errorcode&"</h2>"    
  strError=strError&XMLMorntekDocument.parseerror.reason&"
"    
  strError=strError&XMLMorntekDocument.parseerror.url&"
"    
  strError=strError&XMLMorntekDocument.parseerror.line&"
"    
  strError=strError&XMLMorntekDocument.parseerror.filepos&"
"    
  strError=strError&XMLMorntekDocument.parseerror.srcText&"
"    
  response.write   strError    
  end   if    
  end   function    
   
  '------------------------------------------------    
  '函数名字:CloseXml()    
  '入口参数:   无    
  '出口参数:   无    
  '------------------------------------------------    
  function   CloseXml(XMLMorntekDocument)    
  if   IsObject(XMLMorntekDocument)   then    
  set   XMLMorntekDocument=nothing    
  end   if    
  end   function    
   
   
  '------------------------------------------------    
  '函数名字:SelectXmlNodeText(elementname)    
  '入口参数:   elementname   元素的名字    
  '出口参数:   无    
  '------------------------------------------------    
  function   SelectXmlNodeText(elementname)      
          elementname="//"&elementname    
          temp=XMLMorntekDocument.selectSingleNode(elementname).text    
          selectXmlNodeText=   server.htmlencode(temp)      
   
  end   function      
   
  '------------------------------------------------    
  '函数名字:InsertXmlNodeText(befelementname,elementname,elementtext)    
  '入口参数:   elementname   插入的元素的名字    
  '                     befelementname在此元素的名字前面插入元素    
  '                     elementtext   插入的元素的文本    
  '出口参数:   无    
  '------------------------------------------------    
  function   InsertXmlNodeText(befelementname,elementname,elementtext)      
  dim   befelement,element    
  set   befelement=XMLMorntekDocument.selectSingleNode("//"&befelementname)    
  set   element=   XMLMorntekDocument.createelement(elementname)    
  befelement.insertBefore   element,befelement.firstchild    
  element.text=elementtext    
  end   function      
   
  '------------------------------------------------    
  '函数名字:UpdateXmlNodeText(elementname,newelementtext)    
  '入口参数:   elementname   元素的名字    
  '                     newelementtext元素的新文本    
  '出口参数:   无    
  '------------------------------------------------    
  function   UpdateXmlNodeText(elementname,newelementtext)      
  dim   element    
  set   element=XMLMorntekDocument.selectSingleNode("//"&elementname)    
  element.text=newelementtext    
  end   function      
   
  '------------------------------------------------    
  '函数名字:DeleteXmlNodeText(elementname)    
  '入口参数:   elementname   元素的名字    
  '出口参数:   无    
  '------------------------------------------------    
  function   DeleteXmlNodeText(elementname)      
  XMLMorntekDocument.selectSingleNode("//"&elementname).text   =""    
  end   function      
  %>   
 




分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: