ASP通过XMLDom在服务器端操作XML文件

 更新时间:2016年9月20日 19:06  点击:1363
对于小数据量,xml文件在检索更新上于ACCESS有很多优势。 

我曾经测试过不用数据库,把网站的会员信息,商品数据信息,交易信息,网站定制信息全部存放在三个xml文件中,运行结果十分正常,感觉上比数据库快多了,不过没有作测试,不能确定。 

下面说一下创建,查询,修改等对xml操作的主要方法 

’创建DOM对象 
set objDom=server.CreateObject("MicroSoft.XMLDom") 

’取得xml数据 
’方法1 取得xml文件的xml数据 
objDom.load("c:test.xml") 
’方法2 取得xml数据串的数据 
objDom.loadxml("<people><man name="sd"/></people>") 

’创建一个节点对象 
Set Newnode=objDom.CreateElement("people") 
’给这个节点赴值 
Newnode.Text="人" 
’ 给这个节点添加属性 
Set NewAttribute=objDom.CreateNode("attribute","name","") 
NewAttribute.Text= "张三" 
Newnode.SetAttributeNode NewAttribute 
’给这个节点添加子节点 
Set NewnodeChild=objDom.CreateElement("address") 
Newnode.appendChild NewnodeChild 
’保存这个节点对象 
objDom.appendChild Newnode 
objDom.save("c:test.xml") 

’查找一个节点对象 
set objtofind=objdom.documentElement.SelectSingleNode("//people/man") 
’取出这个节点对象的 节点名,节点值,某个属性值,和全部的xml 
nodename=objtofind.nodename 
nodevalue=objtofind.text 
objtofind.GetAttributeNode("name").Nodevalue ’属性名为name的属性值 

’取出一个属性节点对象 
set objattrtofind=objdom.documentElement.SelectSingleNode("//people/man"). GetAttributeNode("name") 
’取出这个节点的属性名,属性值 
nodeattrname=objattrtofind.nodename 
nodeattrvalue=objattrtofind.nodevalue 

’删除一个节点对象 
set objnode=objdom.documentElement.SelectSingleNode("//people/man") ’要删除的节点 
set objparentnode=objdom.documentElement.SelectSingleNode("//people") ’要删除的节点的父节点 
objparentnode.removeChild objnode 

’取出一个节点的字节点集合 
set objnodes=objdom.documentElement.SelectSingleNode("//people/man").ChildNodes 

遍历这个集合 
方法1 
for each element in objnodes 
response.write element.nodename 字节点名 
response.write element.text 字节点值 

next 
方法2 

domlength=objnodes.length 
for i = 0 to domlength-1 
response.write objnodes.childnodes(i).nodename 字节点名 
response.write objnodes.childnodes(i).text 字节点值 
next 

取出一个节点的属性集合 

set objnodes=objdom.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes 

遍历这个集合 

for each element in objnodes 
response.write element.nodename 属性名 
response.write element.nodevalue 属性值 
next 

通常是利用数据库来保存数据,但也可以使用xml文件来保存数据。假设xml文件的内容是:
test.xml
<?xml version="1.0" encoding="gb2312"?>
<site>
 <root>
   <list>
     <id>0</id>
     <name>新浪</name>
     <url>http://www.sina.com.cn</url>
     <time>2007-11-1 10:10:10</time>
   </list>
   <list>
     <id>1</id>
     <name>google</name>
     <url>http://www.google.cn</url>
     <time>2007-11-2 11:11:11</time>
   </list>
  </root>
</site>

用来显示xml中的内容的asp文件
index.asp
<style>
body {font-size:12px;}
</style>
<%
strSourceFile = Server.MapPath("./") & "test.xml"
'获取XML文件的路径这里根据你的虚拟目录不同而不同
Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
'以自由线程创建一个XML对像
objXML.load(strSourceFile)'把XML文件读入内存
Set objRootsite = objXML.documentElement.selectSingleNode("root")
'选取root节点
num=objRootsite.childNodes.length-1
For i=0 To num
 response.write "网站名:"&objRootsite.childNodes.item(i).childNodes.item(1).text&"   <a href=""javascript:delxml("&objRootsite.childNodes.item(i).childNodes.item(0).text&")"">删除</a> <a href=""editxml.asp?id="&objRootsite.childNodes.item(i).childNodes.item(0).text&""">修改</a>
"
 response.write "网址:"&objRootsite.childNodes.item(i).childNodes.item(2).text&"
"
 response.write "添加时间:"&objRootsite.childNodes.item(i).childNodes.item(3).text&"

"
next
%>
<script>
function delxml(id)
{
  if(!confirm("确定要删除吗?")) return false;
  location.href='delxml.asp?id='+id;
}
</script>

注意:index.asp要与test.xml文件放在同一目录下。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> 修改xml内容 </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>

 <BODY>
  <!--#include file="top.asp"-->
 <%
 id=request("id")
 if IsNumeric(id)=false or isNull(id) then
response.write ("参数不正确,请返回!")
response.end
end if 
addok=request("addok")
If addok="" Or IsNull(addok) then
   strSourceFile = Server.MapPath("./") & "test.xml"
  '获取XML文件的路径这里根据你的虚拟目录不同而不同
  Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
 '以自由线程创建一个XML对像
 objXML.load(strSourceFile)'把XML文件读入内存
 Set objRootsite = objXML.documentElement.selectSingleNode("root")
 id=objRootsite.childNodes.item(id).childNodes.item(0).text
 site=objRootsite.childNodes.item(id).childNodes.item(1).text
 url=objRootsite.childNodes.item(id).childNodes.item(2).text
%>
  <form name="form1" method="post" action="?addok=edit&id=<%=id%>">
  网站名:<input type="text" name="site" value="<%=site%>" size="30">

  网  址:<input type="text" name="url" value="<%=url%>" size="40">

  <input type="submit" value="修改"> <input type="reset" value="重置">
  </form>
<%
End If
If addok="edit" Then
  site=request("site")
  url=request("url")
  strSourceFile = Server.MapPath("./") & "test.xml"
  '获取XML文件的路径这里根据你的虚拟目录不同而不同
  Set objXML = Server.CreateObject("Microsoft.XMLDOM")
  '创建XML对像
  objXML.load(strSourceFile)
  '把XML文件读入内存中
  Set objRootlist = objXML.documentElement.selectSingleNode("root")
  set rootOldNode=objRootlist.childNodes.item(id) 
  brstr=chr(13)&chr(10)&chr(9)
  XMLnode=brstr&"<list>"&vbnewline & _
     "<id>"&id&"</id>"&vbnewline & _
"<name>"&site&"</name>"&vbnewline & _
"<url>"&url&"</url>"&vbnewline & _
"<time>"&Replace(Replace(Now(),"上午 ",""),"下午 ","")&"</time>"&vbnewline & _
"</list>"&vbnewline&vbnewline
  '根据得到的数据建立XML片段
set objXML2=Server.CreateObject("Microsoft.XMLDOM")
'建立一个新XML对像
objXML2.loadXML(XMLnode)
'把XML版片段读入内存中
set rootNewNode=objXML2.documentElement
'获得objXML2的根节点
objRootlist.ReplaceChild rootNewNode,rootOldNode
'修改test.xml
objXML.save(strSourceFile)
'存储test.xml文件(因为不存储test.xml只在内存中更新了)
set objXML=nothing
set objXML2=nothing
Response.Redirect("index.asp")
response.end

End if
%>
 </BODY>
</HTML>

什么是XML?
XML是EXtensible Markup Language的缩写
XML是一种类似于HTML的标记语言
XML是用来描述数据的
XML的标记不是在XML中预定义的,你必须定义自己的标记
XML使用文档类型定义(DTD)或者模式(Schema)来描述数据
XML使用DTD或者Schema后就是自描述的语言
--------------------------------------------------------------------------------
XML和HTML的主要区别是什么
XML是用来存放数据的
XML不是HTML的替代品,XML和HTML是两种不同用途的语言。
XML是被设计用来描述数据的,重点是:什么是数据,如何存放数据。
HTML是被设计用来显示数据的,重点是:显示数据以及如何显示数据更好上面。
HTML是与显示信息相关的, XML则是与描述信息相关的。
--------------------------------------------------------------------------------
XML 什么也不做
XML 被设计成什么都不做的。
也许看起来很难理解,但事实上XML确实什么都不做。XML只是用来组织、存储和发送信息的。
下面的例子是Ordm给Lin的便条,使用的是XML格式:
<note>
<to>Lin</to>
<from>Ordm</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这个便条有信息头,又信息主体,还包括发送人和接收人。尽管如此,这个XML文档仍然什么都不做,他只是用XML标记存储信息的文件。有人已经编写出来发送和接收并且显示这种格式信息的软件。
--------------------------------------------------------------------------------
XML是自由的、可以扩展的
XML标记并不是预先规定好的,你必须创造你自己的标记。
在HTML文档中必须使用规则中定义好的标记。比如:<P><br><a></a>等等。
XML允许你定义自己的标记以及文档结构。
比如在上面例子中的"<to>"、"<from>"标记都不是在XML规范中事先定义好的。这些标记都是XML文档的作者“创造”出来的。
--------------------------------------------------------------------------------
XML是HTML的补充
XML并不是HTML的替代品。
XML并不是HTML的替代品,理解这一点非常重要。在将来的网页开发中,XML将被用来描述、存储数据,而HTML则是用来格式化和显示数据的。
对于XML最好的形容可能是: XML是一种跨平台的,与软、硬件无关的,处理信息的工具。
--------------------------------------------------------------------------------
XML在未来Web开发中的应用
XML无处不在
XML发展的非常迅速,这实在令人感到惊奇,有很多的软件开发商都采用了XML标准。

我们相信,在未来的Web开发中,XML将和HTML一样受到重视,他们都是Web技术的基础。XML将成为最普遍的数据操纵和数据传输的工具

XML是eXtensible Markup Language的缩写。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

XML的前身是SGML(The Standard Generalized Markup Language),是自IBM从60年代就开始发展的GML(Generalized Markup Language)

同HTML一样, XML (可扩展标识语言)是通用标识语言标准(SGML)的一个子集,它是描述网络上的数据内容和结构的标准。尽管如此,XML不象HTML,HTML仅仅提供了在页面上显示信息的通用方法(没有上下文相关和动态功能) ,XML则对数据赋予上下文相关功能,它继承了SGML的大部分功能,却使用了不太复杂的技术。.

为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。

因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言

XML(可扩展标记语言)是从称为SGML(标准通用标记语言)的更加古老的语言派生出来的。SGML的主要目的是定义使用标签来表示数据的标记语言的语法。

标签由包围在一个小于号(<)和一个大于号(>)之间的文本组成,例如<tag>。起始标签(start tag)表示一个特定区域的开始,例如<start>;结束标签(end tag)定义了一个区域的结束,除了在小于号之后紧跟着一个斜线(/)外,和起始标签基本一样,例如</end>。SGML还定义了标签的特性(attribute),它们是定义在小于号和大于号之间的值,例如<img src="picture.jpg">中的src特性。如果你觉得它看起来很熟悉的话,应该知道,基于SGML的语言的最著名实现就是原始的HTML。

SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

1  某些起始标签不允许出现结束标签,例如HTML中<img>标签。包含了结束标签就会出现错误。

2  某些起始标签可以选择性出现结束标签或者隐含了结束标签,例如HTML中<p>标签,当出现另一个<p>标签或者某些其他标签时,便假设在这之前有一个结束标签。

3  某些起始标签要求必须出现结束标签,例如HTML中<script>标签。

4  标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,<b>This is a <i> sample </b> string</i>是正确的。

5  某些特性要求必须包含值,例如<img src="picture.jpg">中的src特性。

6  某些特性不要求一定有值,例如<td nowrap>中的nowrap特性。

7  定义特性的两边有没有加上双引号都是可以的,所以<img src="picture.jpg">和<img src=picture.jpg>都是允许的。

      这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。

      XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:

8  任何的起始标签都必须有一个结束标签。

9  可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<tag />。XML解析器会将其翻译成<tag></tag>。

10  标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如<b>this is a <i>sample</i> string</b>。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。

11  所有的特性都必须有值。

12  所有的特性都必须在值的周围加上双引号。

这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。

如果需要关于SGML和XML具体技术上的对比,请查看W3C的注解,位于:http://www.w3. org/TR/NOTE-sgml-xml.html

如今,XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。这里是一个XML文件的例子:


每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,<books>,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。

范例文件中的第三行代码是注释,你会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。

页面再往下的一些地方,可以发现<desc>标签里有一些特殊的语法。<![CDATA[ ]]>代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在<![CDATA[和]]>之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section。

下面的一行就是在第二本书的定义之前的:

<?page render multiple authors ?>

虽然它看上去很像XML序言,但实际上是一种称为处理指令(processing instruction)的不同类型的语法。处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。

什么是WEB3.0?业内专家诠释:即"WEB3.0=互联网+通讯服务(Internet+Instant Communications)",即通过互联网与通讯的融合,用户可以用所有智能终端(固定电话、移动电话、PC、IPTV、其他智能终端)轻松享受看得见、听的到、用得好的即时交互的信息服务,它必然具备的特性应包括:即时性,融合性,互动性,个性化及自主性。WEB3.0技术提供的服务与目前互联网服务的核心差异在于:WEB3.0是基于个性化、订阅式、主动推送式的即时服务,而目前的互联网服务是围绕着搜索引擎的非即时服务。

看图:


 什么是2.0

定义:所谓的2.0是互联网应用理念上和架构上的升级,而不是简单的某种技术的创新或者某种应用

Ajax、blog、rss、wiki,这些是web2.0?Ajax只是一种一直以来都存在的javascript应用,blog只不过是个人主页的一种改进,rss只不过是xml中一种格式。

所以关键的不再与技术,而在于理念。理念上,Ajax推崇异步web应用;blog推崇一个人为中心的内容管理;rss将分散的个人内容有效的聚集到一起。

web2.0期间出现的应用,虽然有一定的技术含量在里面,但那不是主要因素,你没法从技术上解释web2.0,blog远不如bbs系统的技术成熟和复杂,但是理念更前卫。

我曾经一向讨厌web2.0的叫法,主要是被一些人瞎忽悠搞得很烦。但是不得不承认,web2.0确实是一个非常成功的命名。所以今天也借着这种叫法来说事,就叫web3.0吧。

 

2 web3.0

2.1 web2.0只是开始和过渡

web2.0虽然在理念上有了一定的升级,但还是远远不够的,我们仍然可以看到很多问题,我只说三个:blog的发布系统、评论系统和插件应用

2.1.1 发布系统

内容管理是blog的最基本功能,现在blog的系统也无非是实现了What You See is What you Get (WYSIWYG) 的可视化编辑,实现了分类,复杂点的实现了TAGs。内容的索引能力都是无一例外的很差(blogger可能会好点,具体没研究),版本控制似乎还没有哪个blog有,现在看来,这些功能还稍显复杂,但当一个blog堆积了1000篇文章的时候,索引和修改都会变得非常困难。就如我的blog,想要找一篇历史文章,我都用google去搜索,想要改动什么文字,我宁可重新写一篇新的,想要重新整理整个Blog?那我一定是疯了- -

所以,未来blog(其实也无所谓blog,应该是个人网络中心,下面我会讲到)的内容管理一定会加入现在wiki里面的版本控制功能,集成功能强大的全文索引功能。

我已经很久没更新blog,多半原因是后台太难用了,今天装了Live writer才有动力写篇文章上来。在网速和浏览器速度没有足够快之前,我还是宁可多花几分钟的时间下载和安装一个客户端,在享受更强大编辑功能同时,节省很多时间。

2.1.2 评论系统

上面我说到blog的技术成熟度远低于bbs,评论系统就是其中之一,纵观现在所有的blog系统和bsp,我还没见过哪个blog系统的评论功能能跟 Discuz比。blog不需要功能复杂的评论?那你可就错了,去看看老徐的博客,随便那篇文章不是成百上千的评论?你觉得新浪的评论系统够用吗?它起码有分页,比我用的mt强多了,但还是无法实现丰富的内容编辑和索引。

说道评论系统不得不说的是trackback,trackback 作为一种blog之间内容关联评论功能,本来是想泥补跨站内容关联的功能缺陷,但实现的太蹩脚太简单,以至于很多人不知道这个东西怎么用,却被 spammer找到空当大肆利用。现在已经成为一个鸡肋,很多人在扬言trackback已死。

除trackback外的评论内容,留言者都无法管理和监控,虽然有些blog系统有自动邮件提醒的功能,但这是远不够的。

所以未来评论系统也一定会强化。

2.1.3 插件应用

blog系统的不足远不止发布系统和评论系统,插件是目前填补系统功能不足的最有效手段,wordpress的成功,就得益于完善的插件平台,得到了广大开发者的支持。

但是wp的插件系统缺陷是显而易见的,我做了好多年php开发的人,使用起来都觉得头大,非技术人员就不用说了。另外,wp的插件是无法迁移到其他平台上用的,尤其是跨语言的平台。

现在国外有一些平台,已经在做这样的标准,通过一个REST风格的url就可以忽略平台限制,使用插件。比如netvibes、Facebook、iGoogle、live,国内,sohu blog也引进了netvibes的uwa框架,尝试做开放式blog widget平台。

这有点类似于rss的应用,用xml的标准推行内容传播,Open Widget则是将widget作为一种内容,通过xml的标准传播。

没有哪一家服务供应商或者平台开发者能够满足所有用户的需求,只有Open的大千世界,才是大家所期望的,所以Open Widget一定会成为一种趋势。

好了,说了这么多,无法而是想证明web2.0只是一个过度,那么什么才是web3.0呢?

2.2 什么是web3.0

其实说到这里,很多人应该已经看出来,没有什么所谓的2.0、3.0,因为你没法准确的界定他是什么样的应用,也没法界定它是什么时候开始的,什么时候结束,它只是互联网本身发展的一种趋势。

我要说的3.0,是我目前所能想象的未来互联网应用的框架。
   
  a、网站内信息可以直接和其他网站信息进行交互和倒腾,能通过第三方信息平台同时对多家网站信息进行整合使用;
  b、用户在互联网上拥有自己的数据,并能在不同的网站上使用;
  c、完全基于Web,用浏览器即可实现复杂的系统程序才具有的功能
    可以说Web3.0是三广+三跨(广域的 广语的 广博的 跨区域 跨语种 跨行业)
现实中的每一个行业都是在不断的细分和完善中发展的,比如建筑业、金融业,都已经有比较清晰的划分并且仍在细化,这是几百上千年的发展过程中建立起来的。而互联网才不过发展了不过短短十几年,对于一个可以涵盖几乎所有传统行业的领域来说,现在的互联网应用细分程度还远远不够。就如软件工程里面说的,软件开发的标准和规范还十分简单,开发方法和模块的重用程度远远不够。

互联网也是如此,各种应用的细分、完整性和重用程度远远不够。

所以我认为,未来互联网应用的发展方向一定是向着更加细分、更加专业、更加兼容的方向发展,内容管理将有专业的内容管理提供商,comments将有专业的 comments服务商;插件将有类似于rss的统一标准,而且也会出现像feedburner、google reader这样的widget托管平台和订阅平台。

blog,将演变为个人中心,个人中心中的所有内容只有一个域名和一个页面,剩下的所有的服务都由专业服务商提供,用户只需将需要的应用以widget的方式添加到自己的页面上,就可以享用各种各样完善的服务。

但也不会是像google ig、netvibes这样的集中型个人主页,因为他们没有个性,灵活性也不够。也不会是sohu这样的blog平台,因为各种服务都不是一家公司提供的,bsp可能回归到最原始的个人主页服务,提供一个二级域名和一个静态空间。

那么最主要的一个问题:帐号由谁提供呢?OpenID肯定会成为web3.0的中坚力量,将各个平台有机的连接起来,是你无论走到哪,都用同一个帐号,内容处处关联。

而id 服务本身是需要跟信用挂钩的,这是虚拟和现实之间必须建立的桥梁,现有的社区中信用服务都是依靠某种技术手段建立,都很费劲,而且无法跟现实中的人和信用建立起完整有效的关联,我们不难想到,直接掌握最可靠信用的是银行,所以未来提供OpenID或者互联网身份服务将是银行建立的一种服务,很可能成为银行的某种业务。

在这种模式下,互联网服务已经跟传统的服务行业一样,提供专业服务,收费,互联网的盈利模式也将随之改变。

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
  • 分享一段php获取linux服务器状态的代码

    简单的php获取linux服务器状态的代码,不多说-直接上函数:复制代码 代码如下:function get_used_status(){ $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况 $rs =...2014-05-31
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 查找php配置文件php.ini所在路径的二种方法

    通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31