Archive for the ‘ajax’ category

Php Xml解析之DOMDocument使用方法浅解

May 22nd, 2009

关于用到的XML文件还以“Php Xml处理之simplexml使用方法浅谈”一文中的XML为例,文件名为:me.xml。代码如下:
PHP XML处理XML代码

PHP XML处理介绍一

详细内容一
PHP XML处理介绍二

详细内容二
PHP XML处理介绍三

详细内容三
然后就需要用PHP的DOMDocument去处理这个文件,将XML文件中的任何元素都解析出来。代码如下,里面有注释。
PHP Xml解析DOMDocument代码
// 首先要建一个DOMDocument对象
$xml = new DOMDocument();
// 加载Xml文件
$xml->load(“me.xml”);
// 获取所有的post标签
$postDom = $xml->getElementsByTagName(“post”);
// 循环遍历post标签
foreach($postDom as $post){
// 获取Title标签Node
$title = $post->getElementsByTagName(“title”);
/**
* 要获取Title标签的Id属性要分两部走
* 1. 获取title中所有属性的列表也就是$title->item(0)->attributes
* 2. 获取title中id的属性,因为其在第一位所以用item(0)
*
* 小提示:
* 若取属性的值可以用item(*)->nodeValue
* 若取属性的标签可以用item(*)->nodeName
* 若取属性的类型可以用item(*)->nodeType
*/
echo “Id: ” . $title->item(0)->attributes->item(0)->nodeValue . ”
“;
echo “Title: ” . $title->item(0)->nodeValue . ”
“;
echo “Details: ” . $post->getElementsByTagName(“details”)->item(0)->nodeValue . ”
“;
}
?>
这只是一种方法,DOMDocument相当强大。

创建google地图sitemaps.xml

May 21st, 2009

Sitemaps 协议格式由 XML 标记组成。Sitemaps 的所有数据数值应为实体转义过的。文件本身应为 UTF-8 编码的。
以下是只包含一个网址并使用所有可选标记的 Sitemaps 示例。可选标记为斜体。

< urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
< url>
< loc>http://www.example.com/
< lastmod>2005-01-01
< changefreq>monthly
< priority>0.8

Sitemaps 应:
开始标记开始,以 结束标记结束。
每个网址包含一个作为父标记的 条目。
每一个 父标记包括一个 子标记条目。

必填 封装此文件并提供当前协议标准作为参考。

必填 每个网址条目有一个父标记。剩余标记为此标记的子标记。

必填 该页的网址。如果您的 Web 服务器需要网址的话,此网址应以协议开始(例如:http)并以斜线结尾。此值应少于 2048 个字符。

可选 该文件上次修改的日期。此日期应采用 W3C Datetime 格式。如果需要的话,此格式允许省略时间部分,而仅使用 YYYY-MM-DD。

可选 页面可能发生更改的频率。此值为搜索引擎提供一般性信息,可能与搜索引擎抓取页面的频率不完全相关。有效值为:
always
hourly
daily
weekly
monthly
yearly
never
值“always”应当用于描述每次访问时都会改变的文档。而值“never”应当用于描述已存档网址。
请注意此标记的值被视为提示而不是命令。尽管搜索引擎抓取工具在做决定时考虑此信息,但是它们对标记为“hourly”页面的抓取频率可能低于每小时一次,而对标记为“yearly”页面的抓取频率可
能高于每年一次。抓取工具也可能定期抓取标记为“never”的页面,以便它们能够处理对这些页面的意外更改。

可选 此网址的优先级与您网站上其他网址的优先级相关。有效值范围从 0.0 到 1.0。此值不会影响您的网页与其他网站上网页的比较结果,只是告诉搜索引擎您认为您的那个网页最重要,从而它们对
您页面的抓取可以按照您最喜欢的方式进行排序。
一个网页的默认优先级为 0.5。
请注意,您为页面指定的优先级不影响您的网址在搜索引擎的结果页的排名。搜索引擎在同一网站的不同网址之间进行选择时使用此信息,因此,您可以使用此标记来增加相对重要的网址在搜索索引中
显示的可能性。
而且,请注意为您网站中的所有网址都指定高优先级对您没什么好处。由于优先级是相互关联的,只用于在您自己网站的网页之间进行选择;您网页的优先级不会与其他网站的页面优先级进行比较。
实体转义
我们要求您的 Sitemaps 文件为 UTF-8 编码(通常在保存文件时可以做到)。对于所有的 XML 文件,任何 数据数值(包括网址)都应对下表中列出的字符使用实体转义码。
字符 转义码
& 符号 & &
单引号 ' '
双引号 ” ”
大于 > >
小于 < <
XML Sitemaps 示例
下例显示了一个 XML 格式的 Sitemaps。示例中的 Sitemaps 包含少数网址,每一个都用 XML 标记来识别。此示例中,为每个网址提供了一组不同的可选参数。



http://www.example.com/
2005-01-01
monthly

0.8


http://www.example.com/catalog?item=12&desc=vacation_hawaii
weekly


http://www.example.com/catalog?item=73&desc=vacation_new_zealand
2004-12-23
weekly


http://www.example.com/catalog?item=74&desc=vacation_newfoundland
2004-12-23T18:00:15+00:00

0.3


http://www.example.com/catalog?item=83&desc=vacation_usa
2004-11-23


您可以使用 gzip 压缩您的 Sitemaps 文件。压缩 Sitemaps 文件会降低对带宽的要求。请注意,未压缩的 Sitemaps 文件不得大于 10MB。
使用 Sitemaps 索引文件(对多个 Sitemaps 文件进行分组)
您可以提供多个 Sitemaps 文件,但提供的每个 Sitemaps 文件包括的网址不得超过 50,000 个,并且未压缩时不能大于 10MB (10,485,760)。这些限制条件有助于确保 Web 服务器不会因传输非常大的
文件而遇到麻烦。
如果要列出超过 50,000 个网址,您需要创建多个 Sitemaps 文件。如果预计您的 Sitemaps 网址数量会超过 50,000 个或大小超过 10MB,应考虑创建多个 Sitemaps 文件。如果您的确提供了多个
Sitemaps,您可以将其列在 Sitemaps 索引文件中。Sitemaps 索引文件只能列出不超过 1,000 个 Sitemaps。
Sitemaps 索引文件的 XML 格式与 Sitemaps 文件的 XML 格式非常相似。Sitemaps 索引文件使用以下 XML 标记:
loc
lastmod
sitemap
sitemapindex
注:Sitemaps 索引文件只能指定与其位于同一网站的 Sitemaps。例如,http://www.yoursite.com/sitemap_index.xml 可包含位于 http://www.yoursite.com 的 Sitemaps,但不能包含位于
http://www.example.com 或 http://yourhost.yoursite.com 的 Sitemaps。与 Sitemaps 一样,您的 Sitemaps 索引文件应为 UTF-8 编码。
XML Sitemaps 索引示例
下例展示了一个 XML 格式的 Sitemaps 索引。该 Sitemaps 索引列出了两个 Sitemaps:



http://www.example.com/sitemap1.xml.gz
2004-10-01T18:23:17+00:00


http://www.example.com/sitemap2.xml.gz
2005-01-01


备注:与 XML 文件中的所有值一样,Sitemaps 网址需要实体换码.
Sitemaps 索引 XML 标记定义
需要有 标记并用其来识别 Sitemaps 的位置。
标记是可选标记,用于指示相应 Sitemap 文件的修改时间。它并不对应于该 Sitemap 中列出的任一网页的更改时间。lastmod 标记的值应采用 W3C Datetime 格式。
通过提供最近修改的时间戳启用搜索引擎抓取工具,抓取工具将只检索索引中的 Sitemaps 的一个子集,也就是说,抓取工具只检索某特定日期之后修改的 Sitemaps。通过这一递增的 Sitemaps 提取机
制,可以快速发现超大型网站上的新网址。
标记封装单个 Sitemaps 的相关信息。
标记会压缩有关文件中的所有 Sitemaps 的信息。
Sitemaps 文件的位置
Sitemaps 文件的位置决定该 Sitemaps 中所能包含的一组网址。位于 http://example.com/catalog/sitemap.gz 的 Sitemaps 文件可包含以 http://example.com/catalog/ 开始的任何网址,但不能包
含以 http://example.com/images/ 开始的网址。
如果您有更改 http://example.org/path/sitemap.gz 的许可,您应该也可以提供以 http://example.org/path/ 作为前缀的网址的信息。http://example.com/catalog/sitemap.gz 中,被认为有效的
示例网址包括:

http://example.com/catalog/show?item=23

http://example.com/catalog/show?item=233&user=3453

http://example.com/catalog/sitemap.gz 中被认为无效的网址包括:

http://example.com/image/show?item=23

http://example.com/image/show?item=233&user=3453

https://example.com/catalog/page1.html

被认定为无效的网址将不再考虑。强烈建议将 Sitemaps 放置在 Web 服务器的根目录处。例如,如果 Web 服务器位于 example.com,则 Sitemaps 索引文件应位于 http://example.com/sitemap.gz。
在某些情况下,您需要针对不同的路径创建对应的 Sitemaps,例如,如果在您的组织中,安全许可对应不同目录划分上传权限。
创建移动 Sitemap
移动 Sitemap 采用 Sitemap 协议以及特定的 标记和附加命名空间要求。 请注意:移动 Sitemap 格式正在更改中。 建议您尽快将移动 Sitemap 更新为以下格式。
以下所示为包含单个条目的移动 Sitemap 示例。

xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0">

http://mobile.example.com/article100.html


请注意:
如果要使用 Sitemap 创建工具,您需要查看其是否可以创建移动 Sitemap。
移动 Sitemap 只能包含支持移动网络内容的网址。 Google 抓取机制将忽略任何只支持非移动网络内容的网址。 如果有非移动内容,请为这些网址创建单独的 Sitemap。
如果 标记丢失,我们就无法正确抓取您的移动网址。
支持多种标记语言的网址可以在单个 Sitemap 中列出。
各移动 Sitemap 应使用唯一名称。
如果使用 Sitemap 生成器创建移动 Sitemap,您需要为每个移动 Sitemap 创建单独的配置文件。
创建资讯 Sitemap?
我们建议使用 Sitemap 协议来创建资讯 Sitemap,因为它可让网站管理员提供有关他们站点上页面的其他信息。 此外,基于该协议的 Sitemap 可以被所有主要的搜索引擎使用,因为该协议以
Attribution-ShareAlike 创造性共用许可的条款为基础。
使用 Sitemap 协议创建资讯 Sitemap 时,请记住:
名称空间/URLset 标签
资讯 Sitemap 应该包括资讯模式的第二个名称空间。 资讯 Sitemap 的 URLset 标签示例如下:
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
网址列表
您只能提交已在 Google 网站管理员工具中验证过的站点上的网址。 有关验证站点的详细信息,请访问 Google 网站管理员支持中心中的此篇文章。
请勿在网址中包括栏目 ID。
资讯 Sitemap 网址需要由其所在的网络服务器进行编码以便于阅读, 而且它只能包含 ASCII 字符。 但是,它不能使用大写的 ASCII 字符或某些控制代码或者 * 和 {} 等特殊字符。 如果您的
Sitemap 网址包括这些字符,您会在尝试添加它时收到错误信息。 我们不支持使用微代码对网址进行编码。
您的资讯 Sitemap 只能包含过去三天发布的报道的网址。
资讯 Sitemap 所包含的网址不能超过 1,000 个。 如果您希望加入更多网址,可以将其分成多个 Sitemap,或创建 Sitemap 索引文件来对其进行管理。 使用 Sitemap 协议中提供的 XML 格式。 您的
Sitemap 索引文件所列出的 Sitemap 不应超过 1,000 个。 这些限制可帮助确保您的网络服务器不会因向 Google 资讯提供大型文件而导致负荷过重。
发布日期
每个网址都需要以 W3C 格式包括报道的发布日期,最好包括时间戳。 以下是 W3C 格式的报道发布日期示例:
2006-08-14T03:30:00Z
注意:请向我们提供报道首次出现在您的站点上时的日期。 如果文件不包含报道的日期,则该报道不会包含在 Google 资讯中,且您在资讯抓取器上会看到有关该报道的”日期未找到”错误。
可选的资讯特有的标签
每个网址在资讯模式中都可以包含以下标签:
逗号分隔的关键字列表,描述了报道的内容。 关键字可以提取,但不限于现有的 Google 资讯类别列表
包含一篇报道的资讯 Sitemap 的示例:



http://example.com/article123.html

2006-08-14T03:30:00Z
Business, Mergers, Acquisitions


Google Sitemap.xml 在线生成程序[Asp&Php版]

May 14th, 2009

ASP版代码:
<%
Server.ScriptTimeout=50000
' sitemap_gen.asp
' A simple script to automatically produce sitemaps for a webserver, in the Google Sitemap Protocol (GSP)
' by Francesco Passantino
' www.iteam5.net/francesco/sitemap
' v0.2 released 5 june 2005 (Listing a directory tree recursively improvement)
'
' BSD 2.0 license,
' http://www.opensource.org/licenses/bsd-license.php
' 收集整理: 重庆森林@im286.com
' 部分修改:    独人向晚QQ19433114
session("server")="http://blog.51soump3.com" '你的域名
vDir = "/" '制作SiteMap的目录,相对目录(相对于根目录而言)
set objfso = CreateObject("Scripting.FileSystemObject")
root = Server.MapPath(vDir)
'response.ContentType = "text/xml"
'response.write "
'response.write “
str = “” & vbcrlf
str = str & “” & vbcrlf
Set objFolder = objFSO.GetFolder(root)
'response.write getfilelink(objFolder.Path,objFolder.dateLastModified)
Set colFiles = objFolder.Files
For Each objFile In colFiles
'response.write getfilelink(objFile.Path,objfile.dateLastModified)
str = str & getfilelink(objFile.Path,objfile.dateLastModified) & vbcrlf
Next
ShowSubFolders(objFolder)
'response.write “

str = str & “
” & vbcrlf
set fso = nothing
Set objStream = Server.CreateObject(“ADODB.Stream”)
With objStream
'.Type = adTypeText
'.Mode = adModeReadWrite
.Open
.Charset = “utf-8″
.Position = objStream.Size
.WriteText=str
.SaveToFile server.mappath(“/sitemap.xml”),2 '生成的XML文件名
.Close
End With
Set objStream = Nothing
If Not Err Then
Response.Write(““)
Response.End
End If
Sub ShowSubFolders(objFolder)
Set colFolders = objFolder.SubFolders
For Each objSubFolder In colFolders
if folderpermission(objSubFolder.Path) then
'response.write getfilelink(objSubFolder.Path,objSubFolder.dateLastModified)
str = str & getfilelink(objSubFolder.Path,objSubFolder.dateLastModified) & vbcrlf
Set colFiles = objSubFolder.Files
For Each objFile In colFiles
'response.write getfilelink(objFile.Path,objFile.dateLastModified)
str = str & getfilelink(objFile.Path,objFile.dateLastModified) & vbcrlf
Next
ShowSubFolders(objSubFolder)
end if
Next
End Sub
Function getfilelink(file,datafile)
file=replace(file,root,”",1,-1,1)
file=replace(file,”\”,”/”)
If FileExtensionIsBad(file) then Exit Function
if month(datafile)<10 then filedatem="0"
if day(datafile)<10 then filedated="0"
filedate=year(datafile)&"-"&filedatem&month(datafile)&"-"&filedated&day(datafile)
getfilelink = "“&server.htmlencode(session(“server”)&file)&”“&filedate&”daily

1.0
Response.Flush
End Function
Function Folderpermission(pathName)
'需要过滤的目录(不列在SiteMap里面)
PathExclusion=Array(“\blog”,”\temp”,”\_vti_cnf”,”_vti_pvt”,”_vti_log”,”cgi-bin”,”\admin”,”\edu”)
Folderpermission =True
for each PathExcluded in PathExclusion
if instr(ucase(pathName),ucase(PathExcluded))>0 then
Folderpermission = False
exit for
end if
next
End Function
Function FileExtensionIsBad(sFileName)
Dim sFileExtension, bFileExtensionIsValid, sFileExt
'modify for your file extension (http://www.googleguide.com/file_type.html)
Extensions = Array(“asp”,”png”,”jpeg”,”zip”,”pdf”,”ps”,”html”,”htm”,”php”,”wk1″,”wk2″,”wk3″,”wk4″,”wk5″,”wki”,”wks”
,”wku”,”lwp”,”mw”,”xls”,”ppt”,”doc”,”wks”,”wps”,”wdb”,”wri”,”rtf”,”ans”,”txt”)
'设置列表的文件名,扩展名不在其中的话SiteMap则不会收录该扩展名的文件
if len(trim(sFileName)) = 0 then
FileExtensionIsBad = true
Exit Function
end if
sFileExtension = right(sFileName, len(sFileName) – instrrev(sFileName, “.”))
bFileExtensionIsValid = false 'assume extension is bad
for each sFileExt in extensions
if ucase(sFileExt) = ucase(sFileExtension) then
bFileExtensionIsValid = True
exit for
end if
next
FileExtensionIsBad = not bFileExtensionIsValid
End Function
%>
PHP版代码:
header('Content-type: application/xml; charset="GB2312"',true);
?>

$website = "http://blog.51soump3.com"; /* change this */
$page_root = "/usr/local/psa/home/vhosts/subdomains/my/httpdocs"; /* change this */
/* maybe change this: */
$changefreq = "weekly"; //"always", "hourly", "daily", "weekly", "monthly", "yearly" and "never".
$priority = 0.8;
/* this sets the last modification date of all pages to the current date */
$last_modification = date("Y-m-d\TH:i:s") . substr(date("O"),0,3) . ":" . substr(date("O"),3);
/* list of allowed directories */
$allow_dir[] = "web";
/* list of disallowed directories */
$disallow_dir[] = "admin";
$disallow_dir[] = "_notes";
/* list of disallowed file types */
$disallow_file[] = ".inc";
$disallow_file[] = ".old";
$disallow_file[] = ".save";
$disallow_file[] = ".txt";
$disallow_file[] = ".js";
$disallow_file[] = "~";
$disallow_file[] = ".LCK";
$disallow_file[] = ".zip";
$disallow_file[] = ".ZIP";
$disallow_file[] = ".CSV";
$disallow_file[] = ".csv";
$disallow_file[] = ".css";
$disallow_file[] = ".class";
$disallow_file[] = ".jar";
$disallow_file[] = ".mno";
$disallow_file[] = ".bak";
$disallow_file[] = ".lck";
$disallow_file[] = ".BAK";
/* simple compare function: equals */
function ar_contains($key, $array) {
foreach ($array as $val) {
if ($key == $val) {
return true;
}
}
return false;
}
/* better compare function: contains */
function fl_contains($key, $array) {
foreach ($array as $val) {
$pos = strpos($key, $val);
if ($pos === FALSE) continue;
return true;
}
return false;
}
/* this function changes a substring($old_offset) of each array element to $offset */
function changeOffset($array, $old_offset, $offset) {
$res = array();
foreach ($array as $val) {
$res[] = str_replace($old_offset, $offset, $val);
}
return $res;
}
/* this walks recursivly through all directories starting at page_root and
adds all files that fits the filter criterias */
// taken from Lasse Dalegaard, http://php.net/opendir
function getFiles($directory, $directory_orig = "", $directory_offset="") {
global $disallow_dir, $disallow_file, $allow_dir;
if ($directory_orig == "") $directory_orig = $directory;
if($dir = opendir($directory)) {
// Create an array for all files found
$tmp = Array();
// Add the files
while($file = readdir($dir)) {
// Make sure the file exists
if($file != "." && $file != ".." && $file[0] != '.' ) {
// If it's a directiry, list all files within it
//echo "point1
“;
if(is_dir($directory . “/” . $file)) {
//echo “point2
“;
$disallowed_abs = fl_contains($directory.”/”.$file, $disallow_dir); // handle directories with pathes
$disallowed = ar_contains($file, $disallow_dir); // handle directories only without pathes
$allowed_abs = fl_contains($directory.”/”.$file, $allow_dir);
$allowed = ar_contains($file, $allow_dir);
if ($disallowed || $disallowed_abs) continue;
if ($allowed_abs || $allowed){
$tmp2 = changeOffset(getFiles($directory . “/” . $file, $directory_orig, $directory_offset), $directory_orig, $directory_offset);
if(is_array($tmp2)) {
$tmp = array_merge($tmp, $tmp2);
}
}
} else { // files
if (fl_contains($file, $disallow_file)) continue;
array_push($tmp, str_replace($directory_orig, $directory_offset, $directory.”/”.$file));
}
}
}
// Finish off the function
closedir($dir);
return $tmp;
}
}
$a = getFiles($page_root);
echo '';
?>

foreach ($a as $file) {
?>




}
?>

参数说明:
$website–你的域名
$page_root–你的站点的绝对路径
$changefreq–更新时间单位 “always”(始终), “hourly”(小时), “daily”(天), “weekly”(星期), “monthly”(月), “yearly” “never”(从不)
$priority–更新频率
$allow_dir–允许列表的目录
$disallow_dir–禁止列表的目录
$disallow_file–禁止列表的文件类型
制作过程说明:
  将以上代码复制到本地存为sitemap.asp或sitemap.php,上传到你的服务器网站的根目录下,运行一下就可以在你指定的目录中(建议最好是指定为根目录)自动生成一个sitemap.xml文件了。最后进入google提交页面:https://www.google.com/webmasters/sitemaps/login,有gmail的可以用gmail直接登录。登录后把生成的xml文件地址按步骤提交就可以了。注:你的网站如果增加了新的页面,可以在增加完后再运行一下sitemap.asp或sitemap.php,并再重新提交一下sitemap.xml文件,这样就可以保证sitemap.xml文件的不断更新了!

asp操作xml之如何生成XML数据

November 20th, 2008

asp操作xml之如何生成XML数据
一,必须弄清楚最终需要的是什么
我们通过asp或其他动态编程语言,最终需要的是XML格式的数据,这点和XML数据所在的文件载体无关,它可以是实实在在的XML文件,比如http://www.dw8.cn/common/dw8.xml 。也可以为asp文档,比如:http://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("“)
MyFile.WriteLine(“<世界>“)
MyFile.WriteLine(“<你好>hello,world“)
MyFile.WriteLine(““)
MyFile.Close
%>
查看XML文件内容
有关FSO的操作参看:http://www.cnbruce.com/blog/showlog.asp?cat_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("“)
.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
%>
1,CreateObject(“Microsoft.XMLDOM”) 声明使用XMLDOM对象
2,在元素或节点被建立(createElement、createNode)时,其并没有加到文件树中,若要将节点加到文件树中,则需要插入,如appendChild。
3,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操作是必须的。

入门DIV+CSS

September 1st, 2008

1,文字控制类
font-size:12px; 文字大小,通常为12px。现在又流行14px。大小自己控制。
color:#666; 颜色控制,颜色自己下个取色板吧。16进制
line-height:2em; 行高,em为字符,支持px 百分比等等多种单位
text-align:center; 文字居中,居左不要,居右为right
font-weight:bold; 文字加粗
text-indent:2em; 每段缩进,两个字符,常用
用以上CSS便可基本供职90%的问题了,其他的慢慢自己研究。
2,布局类
margin:10px 10px 10px 50px ; 外补丁,为上 右 下 左。除0外,必须为单位,单位可以是px cm 等等。常用px
padding10px 10px 10px 50px 内补丁,设置同外补丁
float:left; 浮动,常用属性。多试试
width:51px; 宽度
height:89px; 高度
overflow:hidden; 清除立体浮动(针对火狐等浏览器),溢出隐藏
clear:both; 清除平面浮动
border:1px solid #77543b; 设置边框为1,实线,颜色,16进制
每个CSS前必写以下这段代码
*{ padding:0; margin:0;} 如未指定,则内补丁和外补丁均为0,可解决90%的火狐不兼容问题代码。
body{font-size:12px; background:#AC956C;} 设置内容默认字体大小等,不建议在此控制行高。
a:link,a:visited,a:active{ color:#333; text-decoration:none; font-size:12px;}
a:hover{ color:#666; text-decoration:underline;font-size:12px;} 默认链接属性。
li{ list-style:none;} li去掉前面的点。
列表
#tuijian {}
#tuijian ul { margin-left:60px;}
#tuijian ul li{ line-height:1.5em;color:#EEE4C1}
#tuijian ul li a{ color:#EEE4C1}
列表控制比较难学,其实也简单,不建议给li使用外左补丁控制间距,建议使用LI宽度控制。ul一般留空即可,如要定位另说,如果需要列表为一行,常用于导航处,将li设置一个左浮动即可。

如何使用js调用Google Adsense

January 30th, 2008

现在Google Adsense已经允许使用javascript调用adsense代码。这样做的好处是,对于那些生成html文件的程序,将广告与内容分离之后,我们只要修改js文件就能改变我们的广告样式,而不用重新生成html文件。
js调用广告的方法很简单,在需要插入广告的位置,把原有的广告代码改为嵌入的代码,例如

一般的adsense代码如下(注:新代码类似):
==========================================


但是在调用的时候需要进行一些改变
==========================================
document.writeln(“
关于上面实例的两点说明:
1、在整个表单中,不应有名字为action或submit的标签,否则将会产生”对象不支持此属性和方法”的错误。如代码 “
“在表单中是不允许出现的;
2、在form标签中应该存在name属性。即,应该给表单取一个名字。语句document.form.action和document.form.submit中的”form”也就是表单的名字。
表单的分向提交不仅仅使用在论坛的程序中,它还可以运用在许多场合下。恰当的运用表单的分向提交功能可以大大的增强网站的人性化程度。
昨天,我调试程序就出现了这样的问题,就是出现了”对象不支持此属性和方法”的错误,一直无法定位出来,都快疯掉了,后来在发现一个button命名为submit了。
1.——–

2.———-

javascript里的document.all用法

November 16th, 2007

1、理解document.all[]
  从IE4开始IE的object model才增加了document.all[],来看看document.all[]的Description:
  Array of all HTML tags in the document.Collection of all elements contained by the object.
  也就是说document.all[]是文档中所有标签组成的一个数组变量,包括了文档对象中所有元素(见例1)。
  IE’s document.all collection exposes all document elements.This array provides access to every element in the document.
  document.all[]这个数组可以访问文档中所有元素。
  例1(这个可以让你理解文档中哪些是对象)
  < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  
  
  
  
  
   » Read more: javascript里的document.all用法

getElementById 方法

November 16th, 2007

返回具有指定 ID 属性值的第一个对象的一个引用。
语法
oElement = document.getElementById(sIDValue)
参数
sIDValue 必选项。指明 ID 属性值的字符串
返回值
返回 ID 属性值与指定值相同的第一个对象。
注释
如果 ID 属于一个集合,getElementById 方法返回集合中的第一个对象。
getElementById 方法与使用 all 集合上的 item 方法等同。例如,以下代码样本表示如何从 document 对象中取回 ID 为 oDiv 的第一个要素。
使用 DHTML 对象模型:
var ōVDiv = document.body.all.item(“oDiv”);
使用文档对象模型(DOM):
var ōVDiv = document.getElementById(“oDiv”);
示例
以下例子表示如何使用 getElementById 方法返回 ID 属性值 oDiv 的第一次出现。

function fnGetId(){
// Returns the first DIV element in the collection.
var ōVDiv=document.getElementById(“oDiv1″);
}
» Read more: getElementById 方法

getElementByid的用法

November 16th, 2007

getElementById 方法
返回具有指定 ID 属性值的第一个对象的一个引用。
语法
oElement = document.getElementById(sIDValue)
参数
sIDValue 必选项。指明 ID 属性值的字符串
返回值
返回 ID 属性值与指定值相同的第一个对象。
注释
如果 ID 属于一个集合,getElementById 方法返回集合中的第一个对象。
getElementById 方法与使用 all 集合上的 item 方法等同。例如,以下代码样本表示如何从 document 对象中取回 ID 为 oDiv 的第一个要素。
使用 DHTML 对象模型:
var ōVDiv = document.body.all.item(“oDiv”);
使用文档对象模型(DOM):
var ōVDiv = document.getElementById(“oDiv”);
示例
以下例子表示如何使用 getElementById 方法返回 ID 属性值 oDiv 的第一次出现。

function fnGetId(){
// Returns the first DIV element in the collection.
var ōVDiv=document.getElementById(“oDiv1″);
}
» Read more: getElementByid的用法