??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AⅤ优女AV综合久久久,亚洲成色WWW久久网站,久久久无码精品亚洲日韩京东传媒 http://m.tkk7.com/sl2cj/category/11879.html<br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp---->乞怪猪blog搬家?-[www.ialway.com/blog]--希望l箋x!谢谢!^0^zh-cnWed, 28 Feb 2007 05:53:50 GMTWed, 28 Feb 2007 05:53:50 GMT60用PHPd和编写XML DOMhttp://m.tkk7.com/sl2cj/articles/74232.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 10 Oct 2006 02:33:00 GMThttp://m.tkk7.com/sl2cj/articles/74232.htmlhttp://m.tkk7.com/sl2cj/comments/74232.htmlhttp://m.tkk7.com/sl2cj/articles/74232.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/74232.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/74232.html?PHP d和编写可扩展标记语言QXMLQ看h可能有点恐怖。实际上QXML 和它的所有相x术可能是恐怖的Q但是用 PHP d和编?XML 不一定是Ҏ怖的d。首先,需要学习一点关?XML 的知?—?它是什么,用它做什么。然后,需要学习如何用 PHP d和编?XMLQ而有许多U方式可以做qg事?br />
  本文提供?XML 的简短入门,然后解释如何?PHP d和编?XML?br />
  什么是 XMLQ?/b>

  XML 是一U数据存储格式。它没有定义保存什么数据,也没有定义数据的格式。XML 只是定义了标记和q些标记的属性。格式良好的 XML 标记看v来像q样Q?br />
QnameQJack HerringtonQ?nameQ?br />
  q个 QnameQ?标记包含一些文本:Jack Herrington?br />
  不包含文本的 XML 标记看v来像q样Q?br />
QpowerUp /Q?br />
  ?XML Ҏ件事q行~写的方式不止一U。例如,q个标记形成的输Z前一个标记相同:

QpowerUpQ</powerUpQ?br />
  也可以向 XML 标记d属性。例如,q个 QnameQ?标记包含 first ?last 属性:

Qname first="Jack" last="Herrington" /Q?br />
  也可以用 XML 对特D字W进行编码。例如,& W号可以像这L码:

  &

  包含标记和属性的 XML 文g如果像示例一h式化Q就?i>格式良好?/i>Q这意味着标记是对U的Q字W的~码正确。清?1 是一份格式良好的 XML 的示例?br />
  清单 1. XML 图书列表CZ

												 
  QbooksQ?
  QbookQ?
  QauthorQJack HerringtonQ?authorQ?
  QtitleQPHP HacksQ?titleQ?
  QpublisherQO'ReillyQ?publisherQ?
  Q?bookQ?
  QbookQ?
  QauthorQJack HerringtonQ?authorQ?
  QtitleQPodcasting HacksQ?titleQ?
  QpublisherQO'ReillyQ?publisherQ?
  Q?bookQ?
  Q?booksQ?

										

  清单 1 中的 XML 包含一个图书列表。父标记 QbooksQ?包含一l?QbookQ?标记Q每?QbookQ?标记又包?QauthorQ、<titleQ??QpublisherQ?标记?br />
  ?XML 文档的标记结构和内容得到外部模式文g的验证后QXML 文档是正确的。模式文件可以用不同的格式指定。对于本文来_所需要的只是格式良好?XML?br />
  如果觉得 XML 看v来很像超文本标记语言QHTMLQ,那么对了。XML ?HTML 都是Z标记的语aQ它们有许多怼之处。但是,要着重指出的是:虽然 XML 文档可能是格式良好的 HTMLQ但不是所有的 HTML 文档都是格式良好?XML。换行标讎ͼbrQ是 XML ?HTML 之间区别的一个好例子。这个换行标记是格式良好?HTMLQ但不是格式良好?XMLQ?br />
QpQThis is a paragraph

With a line breakQ?pQ?

  q个换行标记是格式良好的 XML ?HTMLQ?br />
QpQThis is a paragraphQbr /Q?br />With a line breakQ?pQ?

  如果要把 HTML ~写成同h格式良好?XMLQ请遵@ W3C 委员会的可扩展超文本标记语言Q?/font> XHTML Q标准(参见 参考资料)。所有现代的览器都能呈?XHTML。而且Q还可以?XML 工具d XHTML q找出文档中的数据,q比解析 HTML Ҏ得多?br />
  使用 DOM 库读?XML

  d格式良好?XML 文g最Ҏ的方式是使用~译成某?PHP 安装的文档对象模?QDOMQ库。DOM 库把整个 XML 文档d内存Qƈ用节Ҏ表示它,如图 1 所C?br />
  ?1. 图书 XML ?XML DOM ?/b>
用PHPd和编写XML DOMQ图一Q? src=

  树顶部的 books 节点有两?book 子标记。在每本书中Q有 author、publisher ?title 几个节点。author、publisher ?title 节点分别有包含文本的文本子节炏V?br />
  d图书 XML 文gq用 DOM 昄内容的代码如清单 2 所C?br />
  清单 2. ?DOM d图书 XML

												 
  Q?php 
  $doc = new DOMDocument(); 
  $doc-Qload( 'books.xml' ); 
   
  $books = $doc-QgetElementsByTagName( "book" ); 
  foreach( $books as $book ) 
  { 
  $authors = $book-QgetElementsByTagName( "author" ); 
  $author = $authors-Qitem(0)-QnodeValue; 
   
  $publishers = $book-QgetElementsByTagName( "publisher" ); 
  $publisher = $publishers-Qitem(0)-QnodeValue; 
   
  $titles = $book-QgetElementsByTagName( "title" ); 
  $title = $titles-Qitem(0)-QnodeValue; 
   
  echo "$title - $author - $publisher\n"; 
  } 
  ?Q?
  
										

  脚本首先创徏一?new DOMdocument 对象Q用 load Ҏ把图?XML 装入q个对象。之后,脚本?getElementsByName Ҏ得到指定名称下的所有元素的列表?br />
  ?book 节点的@环中Q脚本用 getElementsByName Ҏ获得 author、publisher ?title 标记?nodeValue。nodeValue 是节点中的文本。脚本然后显C些倹{?br />
  可以在命令行上像q样q行 PHP 脚本Q?br />
% php e1.php
PHP Hacks - Jack Herrington - O'Reilly
Podcasting Hacks - Jack Herrington - O'Reilly
%

  可以看到Q每个图书块输出一行。这是一个良好的开始。但是,如果不能讉K XML DOM 库该怎么办?


?SAX 解析器读?
XML

  d XML 的另一U方法是使用 XML Simple APIQSAXQ解析器?/font> PHP 的大多数安装都包?SAX 解析器。SAX 解析器运行在回调模型上。每ơ打开或关闭一个标记时Q或者每ơ解析器看到文本Ӟq节点或文本的信息回调用户定义的函数?br />
  SAX 解析器的优点是,它是真正轻量U的。解析器不会在内存中长期保持内容Q所以可以用于非常巨大的文g。缺Ҏ~写 SAX 解析器回调是仉帔R烦的事。清?3 昄了?SAX d图书 XML 文gq显C内容的代码?br />
  清单 3. ?SAX 解析器读取图?XML
												 
  Q?php 
  $g_books = array(); 
  $g_elem = null; 
   
  function startElement( $parser, $name, $attrs )  
  { 
  global $g_books, $g_elem; 
  if ( $name == 'BOOK' ) $g_books []= array(); 
  $g_elem = $name; 
  } 
   
  function endElement( $parser, $name )  
  { 
  global $g_elem; 
  $g_elem = null; 
  } 
   
  function textData( $parser, $text ) 
  { 
  global $g_books, $g_elem; 
  if ( $g_elem == 'AUTHOR' || 
  $g_elem == 'PUBLISHER' || 
  $g_elem == 'TITLE' ) 
  { 
  $g_books[ count( $g_books ) - 1 ][ $g_elem ] = $text; 
  } 
  } 
   
  $parser = xml_parser_create(); 
   
  xml_set_element_handler( $parser, "startElement", "endElement" ); 
  xml_set_character_data_handler( $parser, "textData" ); 
   
  $f = fopen( 'books.xml', 'r' ); 
   
  while( $data = fread( $f, 4096 ) ) 
  { 
  xml_parse( $parser, $data ); 
  } 
   
  xml_parser_free( $parser ); 
   
  foreach( $g_books as $book ) 
  { 
  echo $book['TITLE']." - ".$book['AUTHOR']." - "; 
  echo $book['PUBLISHER']."\n"; 
  } 
  ?Q?
  
										

  脚本首先讄 g_books 数组Q它在内存中容纳所有图书和图书信息Qg_elem 变量保存脚本目前正在处理的标记的名称。然后脚本定义回调函数。在q个CZ中,回调函数?startElement、endElement ?textData。在打开和关闭标记的时候,分别调用 startElement ?endElement 函数。在开始和l束标记之间的文本上面,调用 textData?br />
  在这个示例中QstartElement 标记查找 book 标记Q在 book 数组中开始一个新元素。然后,textData 函数查看当前元素Q看它是不是 publisher、title ?author 标记。如果是Q函数就把当前文本放入当前图书?br />
  Z让解析l,脚本?xml_parser_create 函数创徏解析器。然后,讄回调句柄。之后,脚本d文gq把文g的大块内容发送到解析器。在文gd之后Qxml_parser_free 函数删除解析器。脚本的末尾输出 g_books 数组的内宏V?br />
  可以看到Q这比编?DOM 的同样功能要困难得多。如果没?DOM 库也没有 SAX 库该怎么办?q有替代Ҏ么?

  用正则表辑ּ解析 XML

  可以肯定Q即使提到这个方法,有些工程师也会批评我Q但是确实可以用正则表达式解?XML。清?4 昄了?preg_ 函数d图书文g的示例?br />
  清单 4. 用正则表辑ּd XML
												 
  Q?php 
  $xml = ""; 
  $f = fopen( 'books.xml', 'r' ); 
  while( $data = fread( $f, 4096 ) ) { $xml .= $data; } 
  fclose( $f ); 
   
  preg_match_all( "/\Qbook\Q?.*?)\Q\/book\Q?s",  
  $xml, $bookblocks ); 
   
  foreach( $bookblocks[1] as $block ) 
  { 
  preg_match_all( "/\Qauthor\Q?.*?)\Q\/author\Q?",  
  $block, $author ); 
  preg_match_all( "/\Qtitle\Q?.*?)\Q\/title\Q?",  
  $block, $title ); 
  preg_match_all( "/\Qpublisher\Q?.*?)\Q\/publisher\Q?",  
  $block, $publisher ); 
  echo( $title[1][0]." - ".$author[1][0]." - ". 
  $publisher[1][0]."\n" ); 
  } 
  ?Q?

										

  h意这个代码有多短。开始时Q它把文件读q一个大的字W串。然后用一?regex 函数d每个图书目。最后用 foreach 循环Q在每个图书块间循环Qƈ提取?author、title ?publisher?br />
  那么Q缺陷在哪呢Q用正则表辑ּ代码d XML 的问题是Q它q没先进行检查,保 XML 的格式良好。这意味着在读取之前,无法知道 XML 是否格式良好。而且Q有些格式正的 XML 可能与正则表辑ּ不匹配,所以日后必M改它们?br />
  我从不徏议用正则表辑ּd XMLQ但是有时它是兼Ҏ最好的方式Q因为正则表辑ּ函数L可用的。不要用正则表达式读取直接来自用L XMLQ因为无法控制这c?XML 的格式或l构。应当一直用 DOM 库或 SAX 解析器读取来自用L XML?


?DOM ~写 XML

  d XML 只是公式的一部分。该怎样~写 XML 呢?~写 XML 最好的方式是?DOM。清?5 昄?DOM 构徏图书 XML 文g的方式?br />
   清单 5. ?DOM ~写图书 XML
												 
  Q?php 
  $books = array(); 
  $books [] = array( 
  'title' =Q?'PHP Hacks', 
  'author' =Q?'Jack Herrington', 
  'publisher' =Q?"O'Reilly" 
  ); 
  $books [] = array( 
  'title' =Q?'Podcasting Hacks', 
  'author' =Q?'Jack Herrington', 
  'publisher' =Q?"O'Reilly" 
  ); 
   
  $doc = new DOMDocument(); 
  $doc-QformatOutput = true; 
   
  $r = $doc-QcreateElement( "books" ); 
  $doc-QappendChild( $r ); 
   
  foreach( $books as $book ) 
  { 
  $b = $doc-QcreateElement( "book" ); 
   
  $author = $doc-QcreateElement( "author" ); 
  $author-QappendChild( 
  $doc-QcreateTextNode( $book['author'] ) 
  ); 
  $b-QappendChild( $author ); 
   
  $title = $doc-QcreateElement( "title" ); 
  $title-QappendChild( 
  $doc-QcreateTextNode( $book['title'] ) 
  ); 
  $b-QappendChild( $title ); 
   
  $publisher = $doc-QcreateElement( "publisher" ); 
  $publisher-QappendChild( 
  $doc-QcreateTextNode( $book['publisher'] ) 
  ); 
  $b-QappendChild( $publisher ); 
   
  $r-QappendChild( $b ); 
  } 
   
  echo $doc-QsaveXML(); 
  ?Q?

										

  在脚本的剙Q用一些示例图书装入了 books 数组。这个数据可以来自用户也可以来自数据库?br />
  CZ图书装入之后Q脚本创Z?new DOMDocumentQƈ把根节点 books d到它。然后脚本ؓ每本书的 author、title ?publisher 创徏节点Qƈ为每个节Ҏ加文本节炏V每?book 节点的最后一步是重新把它d到根节点 books?br />
  脚本的末 saveXML Ҏ?XML 输出到控制台。(也可以用 save Ҏ创徏一?XML 文g。)脚本的输出如清单 6 所C?br />
清单 6. DOM 构徏脚本的输?/b>
												 
  % php e4.php  
  Q?xml version="1.0"?Q?
  QbooksQ?
  QbookQ?
  QauthorQJack HerringtonQ?authorQ?
  QtitleQPHP HacksQ?titleQ?
  QpublisherQO'ReillyQ?publisherQ?
  Q?bookQ?
  QbookQ?
  QauthorQJack HerringtonQ?authorQ?
  QtitleQPodcasting HacksQ?titleQ?
  QpublisherQO'ReillyQ?publisherQ?
  Q?bookQ?
  Q?booksQ?
  % 

										

  使用 DOM 的真正h值在于它创徏?XML L格式正确的。但是如果不能用 DOM 创徏 XML 时该怎么办?

  ?PHP ~写 XML

  如果 DOM 不可用,可以?PHP 的文本模板编?XML。清?7 昄?PHP 如何构徏图书 XML 文g?br />
清单 7. ?PHP ~写图书 XML
												 
  Q?php 
  $books = array(); 
  $books [] = array( 
  'title' =Q?'PHP Hacks', 
  'author' =Q?'Jack Herrington', 
  'publisher' =Q?"O'Reilly" 
  ); 
  $books [] = array( 
  'title' =Q?'Podcasting Hacks', 
  'author' =Q?'Jack Herrington', 
  'publisher' =Q?"O'Reilly" 
  ); 
  ?Q?
  QbooksQ?
  Q?php 
   
  foreach( $books as $book ) 
  { 
  ?Q?
  QbookQ?
  QtitleQ<?php echo( $book['title'] ); ?Q</titleQ?
  QauthorQ<?php echo( $book['author'] ); ?Q?
  Q?authorQ?
  QpublisherQ<?php echo( $book['publisher'] ); ?Q?
  Q?publisherQ?
  Q?bookQ?
  Q?php 
  } 
  ?Q?
  Q?booksQ?

										

  脚本的顶部与 DOM 脚本cM。脚本的底部打开 books 标记Q然后在每个图书中P代,创徏 book 标记和所有的内部 title、author ?publisher 标记?br />
  q种Ҏ的问题是对实体进行编码。ؓ了确保实体编码正,必须在每个项目上调用 htmlentities 函数Q如清单 8 所C?br />
清单 8. 使用 htmlentities 函数对实体编?/b>
												  
  QbooksQ?
  Q?php 
   
  foreach( $books as $book ) 
  { 
  $title = htmlentities( $book['title'], ENT_QUOTES ); 
  $author = htmlentities( $book['author'], ENT_QUOTES ); 
  $publisher = htmlentities( $book['publisher'], ENT_QUOTES ); 
  ?Q?
  QbookQ?
  QtitleQ<?php echo( $title ); ?Q</titleQ?
  QauthorQ<?php echo( $author ); ?Q?Q?authorQ?
  QpublisherQ<?php echo( $publisher ); ?Q?
  Q?publisherQ?
  Q?bookQ?
  Q?php 
  } 
  ?Q?
  Q?booksQ?

										

  q就是用基本?PHP ~写 XML 的烦Z处。您以ؓ自己创徏了完的 XMLQ但是在试图使用数据的时候,马上׃发现某些元素的编码不正确?br />
  l束?/b>

  XML 周围L许多夸大之处和؜淆之处。但是,q不像您惛_的那么难 —?特别是在 PHP q样优秀的语a中。在理解q正地实现?XML 之后Q就会发现有许多强大的工具可以用。XPath ?XSLT 是q样两个值得研究的工兗?


]]>
在PHP5中用DOM控制XMLhttp://m.tkk7.com/sl2cj/articles/74223.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 10 Oct 2006 01:53:00 GMThttp://m.tkk7.com/sl2cj/articles/74223.htmlhttp://m.tkk7.com/sl2cj/comments/74223.htmlhttp://m.tkk7.com/sl2cj/articles/74223.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/74223.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/74223.html PHP5中增ZXML的支持,使用DOM扩展了XML操作的能耐。这些函C?PHP5 核心的一部分Q无需被安装即可用?
  
  下面的例子简单的演示了DOM对XML的操作,详细解释L代码中的注释
  
  <?
  /************************************************
  ** use XML in PHP5
  ** reference site:
  ** http://cn.php.net/manual/zh/ref.dom.php
  ** the follow codes need PHP5 support
  ** www.knowsky.com
  *************************************************/
  
  
  //首先要创Z个DOMDocument对象
  $dom = new DomDocument();
  //然后载入XML文g
  $dom -> load("test.xml");
  
  //输出XML文g
  //header("Content-type: text/xml;charset=gb2312");
  //echo $dom -> saveXML();
  
  //保存XML文gQ返回gؓintQ文件大,以字节ؓ单位Q?
  //$dom -> save("newfile.xml");
  
  echo "<hr/>取得所有的title元素:<hr/>";
  $titles = $dom -> getElementsByTagName("title");
  foreach ($titles as $node)
  {
   echo $node -> textContent . "<br/>";
   //q样也可?
   //echo $node->firstChild->data . "<br/>";
  }
  
  /*
  echo "<hr/>从根l点遍历所有结点:<br/>";
  foreach ($dom->documentElement->childNodes as $items) {
   //如果节点是一个元?nodeType == 1)q且名字是itemql@?
   if ($items->nodeType == 1 && $items->nodeName == "item") {
   foreach ($items->childNodes as $titles) {
   //如果节点是一个元素,q且名字是title打印它.
   if ($titles->nodeType == 1 && $titles->nodeName == "title") {
   print $titles->textContent . "\n";
   }
   }
   }
  }
  */
  
  //使用XPath查询数据
  echo "<hr/>使用XPath查询的title节点l果:<hr/>";
  $xpath = new domxpath($dom);
  $titles = $xpath->query("/rss/channel/item/title");
  foreach ($titles as $node)
  {
   echo $node->textContent."<br/>";
  }
  /*
  q样和用getElementsByTagName()Ҏ差不多,但是Xpath要强大的?
  深入一点可能是q样Q?
  /rss/channel/item[position() = 1]/title q回W一个item元素的所?
  /rss/channel/item/title[@id = '23'] q回所有含有id属性ƈ且gؓ23的title
  /rss/channel/&folder&/title q回所有articles元素下面的title(译者注Q?amp;folder&代表目录深度)
  */


//向DOM中写入新数据
  $item = $dom->createElement("item");
  $title = $dom->createElement("title");
  $titleText = $dom->createTextNode("title text");
  $title->appendChild($titleText);
  $item->appendChild($title);
  $dom->documentElement->getElementsByTagName('channel')->item(0)->appendChild($item);
  
  //从DOM中删除节?
  //$dom->documentElement->RemoveChild($dom->documentElement->getElementsByTagName("channel")->item(0));
  //或者用xpath查询点再删除
  //$dom->documentElement->RemoveChild($xpath->query("/rss/channel")->item(0));
  //$dom->save("newfile.xml");
  
  //从DOM中修改节Ҏ?
  //修改W一个title的文?
  //q个地方比较W,新创Z个节点,然后替换旧的节点。如果哪位朋友有其他好的Ҏ请一定要告诉?
  $firstTitle = $xpath->query("/rss/channel/item/title")->item(0);
  $newTitle = $dom->createElement("title");
  $newTitle->appendChild(new DOMText("This's the new title text!!!"));
  $firstTitle->parentNode->replaceChild($newTitle, $firstTitle);
  //修改属?
  //$firstTitle = $xpath->query("/rss/channel/item/title")->item(0);
  //$firstTitle->setAttribute("orderby", "4");
  $dom->save("newfile.xml");
  
  echo "<hr/><a href=\"newfile.xml\">查看newfile.xml</a>";
  
  //下面的代码获得ƈ解析php.net的首,返W一个title元素的内宏V?
  /*
  $dom->loadHTMLFile("http://www.php.net/");
  $title = $dom->getElementsByTagName("title");
  print $title->item(0)->textContent;
  */
  ?>
  
  下面是test.xml文g代码Q?
  
  <?xml version="1.0" encoding="gb2312"?>
  <rss version="2.0">
  <channel>
  <title>javascript</title>
  <link>http://blog.csdn.net/zhongmao/category/29515.aspx</link>
  <description>javascript</description>
  <language>zh-chs</language>
  <generator>.text version 0.958.2004.2001</generator>
  <item>
  <creator>zhongmao</creator>
  <title orderby="1">out put excel used javascript</title>
  <link>http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx</link>
  <pubdate>wed, 15 sep 2004 13:32:00 gmt</pubdate>
  <guid>http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx</guid>
  <comment>http://blog.csdn.net/zhongmao/comments/105385.aspx</comment>
  <comments>http://blog.csdn.net/zhongmao/archive/2004/09/15/105385.aspx#feedback
</comments>
  <comments>2</comments>
  <commentrss>http://blog.csdn.net/zhongmao/comments/commentrss/105385.aspx
</commentrss>
  <ping>http://blog.csdn.net/zhongmao/services/trackbacks/105385.aspx</ping>
  <description>test description</description>
  </item>
  <item>
  <creator>zhongmao</creator>
  <title orderby="2">out put word used javascript</title>
  <link>http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx</link>
  <pubdate>fri, 06 aug 2004 16:33:00 gmt</pubdate>
  <guid>http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx</guid>
  <comment>http://blog.csdn.net/zhongmao/comments/67161.aspx</comment>
  <comments>http://blog.csdn.net/zhongmao/archive/2004/08/06/67161.aspx#feedback
</comments>
  <comments>0</comments>
  <commentrss>http://blog.csdn.net/zhongmao/comments/commentrss/67161.aspx
</commentrss>
  <ping>http://blog.csdn.net/zhongmao/services/trackbacks/67161.aspx</ping>
  <description>test word description</description>
  </item>
  <item>
  <creator>zhongmao</creator>
  <title orderby="3">xmlhttp</title>
  <link>http://blog.csdn.net/zhongmao/archive/2004/08/02/58417.aspx</link>
  <pubdate>mon, 02 aug 2004 10:11:00 gmt</pubdate>
  <guid>http://blog.csdn.net/zhongmao/archive/2004/08/02/58417.aspx</guid>
  <comment>http://blog.csdn.net/zhongmao/comments/58417.aspx</comment>
  <comments>http://blog.csdn.net/zhongmao/archive/2004
/08/02/58417.aspx#feedback</comments>
  <comments>0</comments>
  <commentrss>http://blog.csdn.net/zhongmao/comments/commentrss
/58417.aspx</commentrss>
  <ping>http://blog.csdn.net/zhongmao/services/trackbacks/58417.aspx</ping>
  <description>xmlhttpaaa asd bb cc dd</description>
  </item>
  </channel>
  </rss>


]]>
使用PHP5 DOM-XML创徏和解析XML文ghttp://m.tkk7.com/sl2cj/articles/74208.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 10 Oct 2006 00:37:00 GMThttp://m.tkk7.com/sl2cj/articles/74208.htmlhttp://m.tkk7.com/sl2cj/comments/74208.htmlhttp://m.tkk7.com/sl2cj/articles/74208.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/74208.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/74208.html使用PHP5 DOM-XML创徏和解析XML文g 
?Cloud ?周二, 2006-09-12 01:44 提交

先用PHP5创徏一个xml文g

<?php
$dom = new DomDocument("1.0");

$root = $dom -> createElement("html");
$title = $dom -> createElement("title");
$meta = $dom -> createElement("meta");
$head = $dom -> createElement("head");
$titleText = $dom -> createTextNode("this is a title");
$metaText = $dom -> createTextNode("this is a meta");
$table = $dom -> createElement("table");
$tr = $dom -> createElement("tr");
$td = $dom -> createElement("td");
$tdText = $dom -> createTextNode("words");

$root = $dom -> appendChild($root);
$head = $root -> appendChild($head);
$title = $head -> appendChild($title);
$meta = $head -> appendChild($meta);
$comment = $title -> appendChild($titleText);
$meta -> appendChild($metaText);

$td -> appendChild($tdText);
$tr -> appendChild($td);
$table -> appendChild($tr);
$root -> appendChild($table);
$dom -> save("test5.xml");


echo "<hr/><a href=\"test5.xml\">查看test5.xml</a>";

?>

test5.xml

<?xml version="1.0"?>
<html>
<head>
<title>this is a title</title>
<meta>this is a meta</meta>
</head>
<table>
<tr>
<td>words</td>
</tr>
</table>
</html>

解析test5.xml

<?php
//首先要创Z个DOMDocument对象
$dom = new DomDocument("1.0");

//然后载入XML文g
$dom -> load("test5.xml");

//向DOM中写入新数据
$tr = $dom -> createElement("tr");
$td = $dom -> createElement("td");
$tdText = $dom -> createTextNode("hello world");
$td -> appendChild($tdText);
$tr -> appendChild($td);
$dom -> documentElement -> getElementsByTagName("table") -> item(0) -> appendChild($tr);

//向DOM中写入新数据
$tr2 = $dom -> createElement("tr");
$td2 = $dom -> createElement("td");
$tdText2 = $dom -> createTextNode("hello world too");
$td2 -> appendChild($tdText2);
$tr2 -> appendChild($td2);
$xpath = new domxpath($dom);
$trs = $xpath -> query("/html/table");
$trs -> item(0) -> appendChild($tr2);

$dom -> save("newfile.xml");

echo "<hr/><a href=\"newfile.xml\">查看newfile.xml</a>";

print "<hr>取得所有的td元素<br>";

$tds = $dom -> getElementsByTagName("td");
foreach ($tds as $nodes)
{
	print $nodes -> textContent."<br>";
}

echo "<hr/>使用XPath查询的td节点l果:<hr/>";
$tdss = $xpath -> query("/html/table/tr");
foreach ($tdss as $nodes)
{
	print $nodes -> textContent."<br>";
}
?>

?Marchday ?周二, 2006-09-12 13:52 提交

<?php
header("Content-Type: text/xml");

$doc = new DOMDocument('1.0');
// we want a nice output
//$doc->formatOutput = true;
$root = $doc->createElement('book');
$root = $doc->appendChild($root);
$title = $doc->createElement('title');
$title = $root->appendChild($title);
$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);
//echo "Saving all the document:\n";
echo $doc->saveXML() . "\n";
//echo "Saving only the title part:\n";
//echo $doc->saveXML($title) . "\n";
?> 

注意不要忘了 header("Content-Type:text/xml") ?/p>



]]>
让getElementsByName适应IE和firefoxhttp://m.tkk7.com/sl2cj/articles/73732.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sun, 08 Oct 2006 03:20:00 GMThttp://m.tkk7.com/sl2cj/articles/73732.htmlhttp://m.tkk7.com/sl2cj/comments/73732.htmlhttp://m.tkk7.com/sl2cj/articles/73732.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/73732.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/73732.html让getElementsByName适应IE和firefox
w3c规范中getElementsByName是按着name属性进行检索的Q而MS的IE却是按着id来检索。导致不能得到应该得到的ElementsQؓ适应览器,我们可以做一下调_
一、把需要用getElementsByName的name都加上idQ且id和name相同?br />二、用一个函数来适应览器,代码如下Q?br />
getElementsByName:function (name) {
              var 
returns document.getElementsByName(name);
              if(
returns.length 0) return returns;
              
returns = new Array();
              var 
document.getElementsByTagName('td');
              for(
0e.lengthi++) {
                            if(
e[i].getAttribute("name") == name) {
                                          
returns[returns.length] = e[i];
                            }
              }
              return 
returns;
}


]]>
关于|页播放器。?/title><link>http://m.tkk7.com/sl2cj/articles/68588.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Fri, 08 Sep 2006 11:20:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/68588.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/68588.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/68588.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/68588.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/68588.html</trackback:ping><description><![CDATA[ <font size="2">用js控制|页</font> <a onclick="tagshow(event, '%B2%A5%B7%C5%C6%F7');return false;" href="javascript:;"> <u> <b> <font size="2">播放?/font> </b> </u> </a> <br /> <font size="2">我整理的一些,不是很全。但应该够用?br /><br />media player控制<br /><br />player.controls.play(); 播放<br />player.controls.stop(); 停止<br />player.controls.pause(); 暂停<br />player.controls.currentPosition q回播放文g的当前时间位|(以秒为单位)<br />player.controls.currentPositionString 旉格式的字W串 "0:32"<br />player.currentMedia.duration q回播放文g的总长度(以秒为单位)<br />player.currentMedia.durationString 旉格式的字W串 "4:34"<br />player.settings.volume 音量 Q?-100Q?br />player.settings.balance 声道Q通过它应该可以进行立体声、左声道、右声道?/font> <a onclick="tagshow(event, '%BF%D8%D6%C6');return false;" href="javascript:;"> <u> <b> <font size="2">控制</font> </b> </u> </a> <font size="2">。但对应的取值尚不清楚?br />player.settings.mute = s 静音Qs取gؓtrue和falseQ?br />player.closedCaption.CaptioningID |页中出现字q的容器的ID<br />player.closedCaption.SAMIFileName 字幕文g地址<br />player.playState q回播放器状态( 3Q正在播放,2Q暂?Q已停止Q?br /><br /><br /><strong>播放器代码。?/strong><br /><br /><div id="aa" style="display:none"><object id=nstv classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 width=280 height=60 codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application/x-oleobject><br /><param name=URL value=e:\working\popo\record\video\01.mp3><br /><PARAM NAME=UIMode value=full><br /><PARAM NAME=AutoStart value=true><br /><PARAM NAME=Enabled value=true><br /><PARAM NAME=enableContextMenu value=false><br /></object><br /></div><br /><br /><strong>自己写的</strong><br /><INPUT type="file" id="FileBtn" onChange="test(this.value);"> <br /><input type="button" onClick="stopBtn();" value="stop"><br /><input type="button" onClick="playBtn();" value="play"><br /><script language="javascript"><br />function test(str){<br /> nstv.URL=str<br /> alert(str);<br />}<br />//<br />function stopBtn() {<br /> nstv.controls.stop(); <br />}<br />//<br />function playBtn() {<br /> nstv.controls.play();<br />}<br />//<br /></script><br /></font> <img src ="http://m.tkk7.com/sl2cj/aggbug/68588.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-09-08 19:20 <a href="http://m.tkk7.com/sl2cj/articles/68588.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp删除文g的函敎ͼ三个Q?/title><link>http://m.tkk7.com/sl2cj/articles/52987.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Thu, 15 Jun 2006 06:10:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/52987.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/52987.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/52987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/52987.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/52987.html</trackback:ping><description><![CDATA[ <a > <strong> <font color="#287ed3" size="2">asp删除文g的函敎ͼ三个Q?/font> </strong> </a> <strong> <font color="#287ed3" size="2"> </font> </strong> <div id="icgs8ii" class="textbox-fontsize"> <font size="2"> <strong> <font color="#287ed3"> <img title="字体大小" alt="" src="http://www.aixq.com/template/triblue/images/toolbar_fontsize.gif" border="0" /> </font> </strong> </font> <a href="javascript: doZoom(16);"> <font size="2">?/font> </a> <font size="2"> | </font> <a href="javascript: doZoom(14);"> <font size="2">?/font> </a> <font size="2"> | </font> <a href="javascript: doZoom(12);"> <font size="2">?/font> </a> <font size="2"> </font> <a > <font size="2"> <img title="订阅本文" alt="" src="http://www.aixq.com/template/triblue/images/toolbar_rss.gif" border="0" /> </font> </a> <font size="2"> </font> <a > <font size="2"> <img title="保存本文为文本文? alt="" src="http://www.aixq.com/template/triblue/images/toolbar_save.gif" border="0" /> </font> </a> <font size="2"> </font> </div> <div id="ccy4884" class="textbox-label"> <font size="2">[<img title="不指? alt="不指? src="http://www.aixq.com/images/weather/blank.gif" /> 2006/04/14 01:06 | by </font> <a target="_blank"> <font size="2">admin</font> </a> <font size="2"> ] </font> </div> <div id="ismquss" class="textbox-content" id="zoomtext"> <div id="84seyyg" class="code"> <br /> <br /> <font size="2"><% <br />''文g删除函数 <br />function deletefile(filename) <br />if filename<>"" then <br />set fso=server.CreateObject("scripting.filesystemobject") <br />if fso.FileExists(filename) then <br />fso.DeleteFile filename <br />else <br />Response.Write "<script>alert(''该文件不存在'');</script>" <br />end if <br />end if <br />end function <br /><br />strfile=server.MapPath("fileName") <br />deletefile(strfile) <br />%> <br /><br /><br /><br /><br /><br />'E序名:delfile.asp<br />'关键参数Qstruploadfiles 文g名称 <br />例:<a href="/delfile.asp?action=test.rar">删除test.rar文g</a><br /><br /><%<br />struploadfiles=trim(request.querystring("struploadfiles"))<br />action=trim(request.querystring("action"))<br />response.write "成功删除<font color=red>"&struploadfiles&"</font>文g!"<br />call delfiles(struploadfiles & "")<br />sub delfiles(struploadfiles)<br />if struploadfiles="" then exit sub<br />dim fso,arruploadfiles,i<br />set fso = createobject("scripting.filesystemobject")<br />fso.deletefile(server.mappath("" & struploadfiles))<br />set fso = nothing<br />response.write"<script language=javascript>alert('成功删除文g,返回上一?');"<br />response.write"this.location.href='javascript:history.back();'</script>"<br />end sub<br />%> <br /><br /><br /><br /><br /><br /><% <br />''文g删除函数 <br />function deletefile(filename) <br />if filename<>"" then <br />set fso=server.CreateObject("scripting.filesystemobject") <br />if fso.FileExists(filename) then <br />fso.DeleteFile filename <br />else <br />Response.Write "<script>alert(''该文件不存在'');</script>" <br />end if <br />end if <br />end function <br /><br />strfile=server.MapPath("fileName") <br />deletefile(strfile) <br />%> <br /><br /><font size="3">Function DeleFile(FilePath)<br />    On Error Resume Next<br />    Set Del=Server.CreateObject("Scripting.FileSystemObject")<br />    if Err <> 0 Then <br />        DelFile="该空间不支持FSOlgQ无法删除文Ӟ"<br />    else<br />        if InStr(FilePath, ",") > 0 then<br />            FilePath=Split(FilePath,",")<br />            For i = 0 to ubound(FilePath)<br />                If Del.FileExists(Server.MapPath(FilePath))=True Then Del.DeleteFile Server.MapPath(FilePath(i)),true<br />            Next</font><br /><font size="3">       Else<br />            If Del.FileExists(Server.MapPath(FilePath))=True Then Del.DeleteFile Server.MapPath(FilePath),true<br />        End if<br />    End if<br />    Set Del=Nothing<br />End Function</font><br /><br /></font> </div> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/52987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-15 14:10 <a href="http://m.tkk7.com/sl2cj/articles/52987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FileSystemObject处理文g http://m.tkk7.com/sl2cj/articles/52983.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 15 Jun 2006 06:05:00 GMThttp://m.tkk7.com/sl2cj/articles/52983.htmlhttp://m.tkk7.com/sl2cj/comments/52983.htmlhttp://m.tkk7.com/sl2cj/articles/52983.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/52983.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/52983.html FileSystemObject处理文g
2003:9:26 ·来源Q不?karry

有两U主要的文g处理cdQ?

创徏、添加或删除数据Q以及读取文?
Ud、复制和删除文g
创徏文g
创徏I文本文Ӟ有时被叫做“文本流”)有三U方法?
W一U方法是?CreateTextFile Ҏ?下面的示例示范了?VBScript 中如何用q种Ҏ来创建文本文Ӟ


Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)

要在 JScript 中用q种ҎQ则使用下面的代码:

var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);

误察CZ代码Q来领会如何?FileSystemObject 中?CreateTextFile Ҏ?
创徏文本文g的第二种Ҏ是,使用 FileSystemObject 对象?OpenTextFile ҎQƈ讄 ForWriting 标志。在 VBScript 中,代码像下面的示例一P

Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)

要在 JScript 中用这U方法来创徏文本文gQ则使用下面的代码:

var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);

创徏文本文g的第三种Ҏ是,使用 OpenAsTextStream ҎQƈ讄 ForWriting 标志。要使用q种ҎQ在 VBScript 中用下面的代码Q?

Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)

?JScript 中,则用下面示例中的代码:

var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);

d数据到文件中
一旦创Z文本文gQ用下面的三个步骤向文件添加数据:

打开文本文g?
写入数据?
关闭文g?
要打开现有的文Ӟ则?FileSystemObject 对象?OpenTextFile Ҏ?File 对象?OpenAsTextStream Ҏ?
要写数据到打开的文本文Ӟ则根据下表所qCQ务?TextStream 对象?Write、WriteLine ?WriteBlankLines Ҏ?

d Ҏ
向打开的文本文件写数据Q不用后l一个新行字W?Write
向打开的文本文件写数据Q后l一个新行字W?WriteLine
向打开的文本文件写一个或多个I白行?WriteBlankLines


误察CZ代码Q来领会如何?FileSystemObject 对象中?Write、WriteLine ?WriteBlankLines Ҏ?

要关闭一个打开的文Ӟ则?TextStream 对象?Close Ҏ?

误察CZ代码Q来领会如何?FileSystemObject 中?Close Ҏ?


--------------------------------------------------------------------------------

注意 新行字符包含一个或几个字符Q取决于操作pȝQ,以把光标UdC一行的开始位|(回R/换行Q。注意某些字W串末尾可能已经有这个非打印字符了?

--------------------------------------------------------------------------------


下面?VBScript 例子C了如何打开文gQ和同时使用三种写方法来向文件添加数据,然后关闭文gQ?


Sub CreateFile()
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\testfile.txt", True)
' 写一行,q且带有新行字符?
tf.WriteLine("Testing 1, 2, 3.")
' 向文件写三个新行字符?
tf.WriteBlankLines(3)
' 写一行?
tf.Write ("This is a test.")
tf.Close
End Sub
q个CZC了在 JScript 中如何用这三个ҎQ?

function CreateFile()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一行,q且带有新行字符?
tf.WriteLine("Testing 1, 2, 3.") ;
// 向文件写三个新行字符?
tf.WriteBlankLines(3) ;
// 写一行?
tf.Write ("This is a test.");
tf.Close();
}
d文g
要从文本文gd数据Q则使用 TextStream 对象?Read、ReadLine ?ReadAll Ҏ。下表描qC不同的Q务应使用哪种Ҏ?
d Ҏ
从文件读取指定数量的字符?Read
d一整行Q一直到但不包括新行字符Q?ReadLine
d文本文g的整个内宏V?ReadAll


误察CZ代码Q来领会如何?FileSystemObject 中?ReadAll ?ReadLine Ҏ?

如果使用 Read ?ReadLine ҎQƈ且想跌数据的特D部分,则?Skip ?SkipLine Ҏ。read Ҏ的结果文本存在一个字W串中,该字W串可以昄在一个控件中Q也可以用字W串函数Q如 Left、Right ?MidQ来分析Q连接等{?

下面?VBScript CZC了如何打开文gQ和如何写数据到文g中ƈ从文件读取数据:


Sub ReadFiles
Dim fso, f1, ts, s
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
' 写一行?
Response.Write "Writing file
"
f1.WriteLine "Hello World"
f1.WriteBlankLines(1)
f1.Close
' d文g的内宏V?
Response.Write "Reading file
"
Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
s = ts.ReadLine
Response.Write "File contents = '" & s & "'"
ts.Close
End Sub

下面的代码示范了?JScript 中做同样的事Q?

function ReadFiles()
{
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 写一行?
Response.Write("Writing file
");
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
f1.Close();
// d文g的内宏V?
Response.Write("Reading file
");
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
s = ts.ReadLine();
Response.Write("File contents = '" + s + "'");
ts.Close();
}

Ud、复制和删除文g
FSO 对象模式各有两种ҎUd、复制和删除文gQ如下表所q?
d Ҏ
Ud文g File.Move ?FileSystemObject.MoveFile
复制文g File.Copy ?FileSystemObject.CopyFile
删除文g File.Delete ?FileSystemObject.DeleteFile


误察CZ代码Q来领会?FileSystemObject 中删除文件的两种Ҏ?

下面?VBScript CZQ在驱动?C 的根目录中创Z个文本文Ӟ向其中写一些信息,然后把它Ud?\tmp 目录中,q在 \temp 中做一个备份,最后把它们从两个目录中删掉?

要运行下面的CZQ需要先在驱动器 C 的根目录中创?\tmp ?\temp 目录Q?


Sub ManipFiles
Dim fso, f1, f2, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
Response.Write "Writing file
"
' 写一行?
f1.Write ("This is a test.")
' 关闭文g?
f1.Close
Response.Write "Moving file to c:\tmp
"
' 获取 C 的根目录(C:\)中的文g的句柄?
Set f2 = fso.GetFile("c:\testfile.txt")
' 把文件移动到 \tmp 目录?
f2.Move ("c:\tmp\testfile.txt")
Response.Write "Copying file to c:\temp
"
' 把文件复制到 \temp 目录?
f2.Copy ("c:\temp\testfile.txt")
Response.Write "Deleting files
"
' 获得文g当前位置的句柄?
Set f2 = fso.GetFile("c:\tmp\testfile.txt")
Set f3 = fso.GetFile("c:\temp\testfile.txt")
' 删除文g?
f2.Delete
f3.Delete
Response.Write "All done!"
End Sub

下面的代码示范了?JScript 中做同样的事Q?

function ManipFiles()
{
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
Response.Write("Writing file
");
// 写一行?
f1.Write("This is a test.");
// 关闭文g?
f1.Close();
Response.Write("Moving file to c:\\tmp
");
// 获取 C 的根目录(C:\)中的文g的句柄?
f2 = fso.GetFile("c:\\testfile.txt");
// 把文件移动到 \tmp 目录?
f2.Move ("c:\\tmp\\testfile.txt");
Response.Write("Copying file to c:\\temp
");
// 把文件复制到 \temp 目录?
f2.Copy ("c:\\temp\\testfile.txt");
Response.Write("Deleting files
");
// 获得文g当前位置的句柄?
f2 = fso.GetFile("c:\\tmp\\testfile.txt");
f3 = fso.GetFile("c:\\temp\\testfile.txt");
// 删除文g?
f2.Delete();
f3.Delete();
Response.Write("All done!");
}


]]>
无组件ASP文g上传源代?l本人测试通过............ [转]http://m.tkk7.com/sl2cj/articles/52480.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Tue, 13 Jun 2006 07:27:00 GMThttp://m.tkk7.com/sl2cj/articles/52480.htmlhttp://m.tkk7.com/sl2cj/comments/52480.htmlhttp://m.tkk7.com/sl2cj/articles/52480.html#Feedback3http://m.tkk7.com/sl2cj/comments/commentRss/52480.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/52480.html
 
无组件ASP文g上传源代?l本人测试通过............

无组件ASP文g上传源代?br />
动网论坛的无lg上传Q?
以下是从动网论坛分离出来的代码?

如有更好用的请告诉作?
|名Q网h生?
QQQ?4883661
mail:wuyingke5155@163.com

saveannounce_upload.asp 上传?
------------------------------------
<html>
<head>
<style type="text/css">
body {font-size:9pt;}
input {font-size:9pt;}
</style>
<title>文g上传</title>
</head>
<body>
<form name="form" method="post" action="saveannouce_upfile.asp" enctype="multipart/form-data" >
文g
<input type="file" name="file1" size=10>
<input type="submit" name="Submit" value="上传">
</form>
</body>
</html>

------------------------------------
saveannouce_upfile.asp 保存文g到服务器
------------------------------------
<!--#include FILE="upload.inc"-->
<html>
<head>
<title>文g上传</title>
</head>
<body>
<%
dim upload,file,formName,formPath
set upload=new upload_5xSoft ''''建立上传对象
formPath=upload.form("filepath") ''''在目录后?/)
if right(formPath,1)<>"/" then formPath=formPath&"/"
for each formName in upload.file ''''列出所有上传了的文?
set file=upload.file(formName) ''''生成一个文件对?
if file.filesize<100 then
response.write "<font size=2>请先选择你要上传的文件 [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if
if file.filesize>500*1000 then ''讄上传文g大小?00K
response.write "<font size=2>文g大小过了限?500K [ <a href=# onclick=history.go(-1)>重新上传</a> ]</font>"
response.end
end if
if file.FileSize>0 then ''''如果 FileSize > 0 说明有文件数?
file.SaveAs Server.mappath("updata\"&file.FileName) ''''保存文g
end if
set file=nothing
next
set upload=nothing
response.write "<font size=2>文g上传成功 [ <a href=# onclick=history.go(-1)>l箋上传</a> ]</font>"
%>
</body>
</html>

未完接下


接上

------------------------------------
upload.inc 建立upload对象
------------------------------------
<SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT>

dim upfile_5xSoft_Stream

Class upload_5xSoft

dim Form,File,Version

Private Sub Class_Initialize
dim iStart,iFileNameStart,iFileNameEnd,iEnd,vbEnter,iFormStart,iFormEnd,theFile
dim strDiv,mFormName,mFormValue,mFileName,mFileSize,mFilePath,iDivLen,mStr
Version=""
if Request.TotalBytes<1 then Exit Sub
set Form=CreateObject("Scripting.Dictionary")
set File=CreateObject("Scripting.Dictionary")
set upfile_5xSoft_Stream=CreateObject("Adodb.Stream")
upfile_5xSoft_Stream.mode=3
upfile_5xSoft_Stream.type=1
upfile_5xSoft_Stream.open
upfile_5xSoft_Stream.write Request.BinaryRead(Request.TotalBytes)

vbEnter=Chr(13)&Chr(10)
iDivLen=inString(1,vbEnter)+1
strDiv=subString(1,iDivLen)
iFormStart=iDivLen
iFormEnd=inString(iformStart,strDiv)-1
while iFormStart < iFormEnd
iStart=inString(iFormStart,"name=""")
iEnd=inString(iStart+6,"""")
mFormName=subString(iStart+6,iEnd-iStart-6)
iFileNameStart=inString(iEnd+1,"filename=""")
if iFileNameStart>0 and iFileNameStart<iFormEnd then
iFileNameEnd=inString(iFileNameStart+10,"""")
mFileName=subString(iFileNameStart+10,iFileNameEnd-iFileNameStart-10)
iStart=inString(iFileNameEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)
if iEnd>iStart then
mFileSize=iEnd-iStart-4
else
mFileSize=0
end if
set theFile=new FileInfo
theFile.FileName=getFileName(mFileName)
theFile.FilePath=getFilePath(mFileName)
theFile.FileSize=mFileSize
theFile.FileStart=iStart+4
theFile.FormName=FormName
file.add mFormName,theFile
else
iStart=inString(iEnd+1,vbEnter&vbEnter)
iEnd=inString(iStart+4,vbEnter&strDiv)

if iEnd>iStart then
mFormValue=subString(iStart+4,iEnd-iStart-4)
else
mFormValue=""
end if
form.Add mFormName,mFormValue
end if

iFormStart=iformEnd+iDivLen
iFormEnd=inString(iformStart,strDiv)-1
wend
End Sub

Private Function subString(theStart,theLen)
dim i,c,stemp
upfile_5xSoft_Stream.Position=theStart-1
stemp=""
for i=1 to theLen
if upfile_5xSoft_Stream.EOS then Exit for
c=ascB(upfile_5xSoft_Stream.Read(1))
If c > 127 Then
if upfile_5xSoft_Stream.EOS then Exit for
stemp=stemp&Chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c)))
i=i+1
else
stemp=stemp&Chr(c)
End If
Next
subString=stemp
End function

Private Function inString(theStart,varStr)
dim i,j,bt,theLen,str
InString=0
Str=toByte(varStr)
theLen=LenB(Str)
for i=theStart to upfile_5xSoft_Stream.Size-theLen
if i>upfile_5xSoft_Stream.size then exit Function
upfile_5xSoft_Stream.Position=i-1
if AscB(upfile_5xSoft_Stream.Read(1))=AscB(midB(Str,1)) then
InString=i
for j=2 to theLen
if upfile_5xSoft_Stream.EOS then
inString=0
Exit for
end if
if AscB(upfile_5xSoft_Stream.Read(1))<>AscB(MidB(Str,j,1)) then
InString=0
Exit For
end if
next
if InString<>0 then Exit Function
end if
next
End Function

Private Sub Class_Terminate
form.RemoveAll
file.RemoveAll
set form=nothing
set file=nothing
upfile_5xSoft_Stream.close
set upfile_5xSoft_Stream=nothing
End Sub


Private function GetFilePath(FullPath)
If FullPath <> "" Then
GetFilePath = left(FullPath,InStrRev(FullPath, "\"))
Else
GetFilePath = ""
End If
End function

Private function GetFileName(FullPath)
If FullPath <> "" Then
GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1)
Else
GetFileName = ""
End If
End function

Private function toByte(Str)
dim i,iCode,c,iLow,iHigh
toByte=""
For i=1 To Len(Str)
c=mid(Str,i,1)
iCode =Asc(c)
If iCode<0 Then iCode = iCode + 65535
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
End Class


Class FileInfo
dim FormName,FileName,FilePath,FileSize,FileStart
Private Sub Class_Initialize
FileName = ""
FilePath = ""
FileSize = 0
FileStart= 0
FormName = ""
End Sub

Public function SaveAs(FullPath)
dim dr,ErrorChar,i
SaveAs=1
if trim(fullpath)="" or FileSize=0 or FileStart=0 or FileName="" then exit function
if FileStart=0 or right(fullpath,1)="/" then exit function
set dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
upfile_5xSoft_Stream.position=FileStart-1
upfile_5xSoft_Stream.copyto dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
set dr=nothing
SaveAs=0
end function
End Class
</SCRIPT>

?....................


]]>
ASP操作XML文g的完整实?/title><link>http://m.tkk7.com/sl2cj/articles/52128.html</link><dc:creator>blog搬家?-[www.ialway.com/blog]</dc:creator><author>blog搬家?-[www.ialway.com/blog]</author><pubDate>Mon, 12 Jun 2006 02:07:00 GMT</pubDate><guid>http://m.tkk7.com/sl2cj/articles/52128.html</guid><wfw:comment>http://m.tkk7.com/sl2cj/comments/52128.html</wfw:comment><comments>http://m.tkk7.com/sl2cj/articles/52128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/sl2cj/comments/commentRss/52128.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/sl2cj/services/trackbacks/52128.html</trackback:ping><description><![CDATA[ <div class="o8kosu4" id="art_title"> <font size="2">ASP操作XML文g的完整实?/font> </div> <div id="s4a4sam" class="d2"> <span id="c8444oo" class="d2_r"> <font size="2">?/font> <a href="javascript:doZoom(16,19)"> <font size="2">?/font> </a> <font size="2"> </font> <a href="javascript:doZoom(14,17)"> <font size="2">?/font> </a> <font size="2"> </font> <a href="javascript:doZoom(12,15)"> <font size="2">?/font> </a> <font size="2">】?/font> <a > <font size="2">打印</font> </a> <font size="2">】?/font> <a > <font size="2">加入收藏</font> </a> <font size="2">】?/font> <a href="javascript:window.close()"> <font size="2">关闭</font> </a> <font size="2">?/font> </span> <font size="2"> ?/font> <a title="收藏的网将被永久地保存到新ViVi收藏夹http://vivi.sina.com.cn" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(vivi=window.open('http://vivi.sina.com.cn/collect/icollect.php?pid=2008&title='+escape(d.title)+'&url='+escape(d.location.href)+'&desc='+escape(t),'vivi','scrollbars=no,width=480,height=480,left=75,top=20,status=no,resizable=yes'));vivi.focus();"> <font size="2">收藏到新ViVi</font> </a> <font size="2">】?/font> <a title="功能强大的网l收藏夹Q一U钟操作可以轻村֮C存带来的价倹{分享带来的快乐" href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();"> <font size="2">收藏?65KEY</font> </a> <font size="2">?览字号:</font> </div> <div id="ey44aaa" class="d3"> <font size="2">日期Q?004-09-30 人气Q? <script language="javascript" src="../Read.php?ID=31e521e0"></script> 出处Q?<br /></font> <iframe marginwidth="0" marginheight="0" src="../Js/Google.html" frameborder="0" width="468" scrolling="no" height="60"> </iframe> </div> <div class="444oksa" id="content"> <p> <font size="2"><% <br />'---------------------------------------------------------------- <br />'E序? 完成asp语言对XML文档中指定节Ҏ本的增加、删除、修攏V查?<br />'入口参数: ?<br />'出口参数: ?<br />'------------------------------------------------ <br />'函数名字QConnectXml() <br />'入口参数: filename 需要连接或打开的xml文g?<br />'出口参数: ?<br />'q回?QConnectXml=0QXMLMorntekDocument是一个成功装载XML文档的对象了?<br />' ConnectXml<>0,则打印错误信息strError <br />'------------------------------------------------ <br />dim XMLMorntekDocument </font> </p> <p> <font size="2">function ConnectXml(filename) <br />dim strSourceFile <br />strSourceFile = Server.MapPath(filename) <br />Set XMLMorntekDocument = Server.CreateObject("Microsoft.XMLDOM")  <br />XMLMorntekDocument.async = false  <br />XMLMorntekDocument.load(strSourceFile) <br />ConnectXml=XMLMorntekDocument.parseerror.errorcode <br />if XMLMorntekDocument.parseerror.errorcode<>0 then <br />strError="<h2>error"&XMLMorntekDocument.parseerror.errorcode&"</h2>" <br />strError=strError&XMLMorntekDocument.parseerror.reason&"<br>" <br />strError=strError&XMLMorntekDocument.parseerror.url&"<br>" <br />strError=strError&XMLMorntekDocument.parseerror.line&"<br>" <br />strError=strError&XMLMorntekDocument.parseerror.filepos&"<br>" <br />strError=strError&XMLMorntekDocument.parseerror.srcText&"<br>" <br />response.write strError <br />end if <br />end function </font> </p> <p> <font size="2">'------------------------------------------------ <br />'函数名字QCloseXml() <br />'入口参数: ?<br />'出口参数: ?<br />'------------------------------------------------ <br />function CloseXml(XMLMorntekDocument) <br />if IsObject(XMLMorntekDocument) then <br />set XMLMorntekDocument=nothing <br />end if <br />end function </font> </p> <p> <br /> <font size="2">'------------------------------------------------ <br />'函数名字QSelectXmlNodeText(elementname) <br />'入口参数: elementname 元素的名?<br />'出口参数: ?<br />'------------------------------------------------ <br />function SelectXmlNodeText(elementname)  <br />    elementname="http://"&elementname <br />    temp=XMLMorntekDocument.selectSingleNode(elementname).text <br />    selectXmlNodeText= server.htmlencode(temp)  </font> </p> <p> <font size="2">end function  </font> </p> <p> <font size="2">'------------------------------------------------ <br />'函数名字QInsertXmlNodeText(befelementname,elementname,elementtext) <br />'入口参数: elementname 插入的元素的名字 <br />'          befelementname在此元素的名字前面插入元?<br />'          elementtext 插入的元素的文本 <br />'出口参数: ?<br />'------------------------------------------------ <br />function InsertXmlNodeText(befelementname,elementname,elementtext)  <br />dim befelement,element <br />set befelement=XMLMorntekDocument.selectSingleNode("http://"&befelementname) <br />set element= XMLMorntekDocument.createelement(elementname) <br />befelement.insertBefore element,befelement.firstchild <br />element.text=elementtext <br />end function  </font> </p> <p> <font size="2">'------------------------------------------------ <br />'函数名字QUpdateXmlNodeText(elementname,newelementtext) <br />'入口参数: elementname 元素的名?<br />'          newelementtext元素的新文本 <br />'出口参数: ?<br />'------------------------------------------------ <br />function UpdateXmlNodeText(elementname,newelementtext)  <br />dim element <br />set element=XMLMorntekDocument.selectSingleNode("http://"&elementname) <br />element.text=newelementtext <br />end function  </font> </p> <p> <font size="2">'------------------------------------------------ <br />'函数名字QDeleteXmlNodeText(elementname) <br />'入口参数: elementname 元素的名?<br />'出口参数: ?<br />'------------------------------------------------ <br />function DeleteXmlNodeText(elementname)  <br />XMLMorntekDocument.selectSingleNode("http://"&elementname).text ="" <br />end function  <br />%></font> </p> </div> <img src ="http://m.tkk7.com/sl2cj/aggbug/52128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/sl2cj/" target="_blank">blog搬家?-[www.ialway.com/blog]</a> 2006-06-12 10:07 <a href="http://m.tkk7.com/sl2cj/articles/52128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP操作XML数据http://m.tkk7.com/sl2cj/articles/52125.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Mon, 12 Jun 2006 02:05:00 GMThttp://m.tkk7.com/sl2cj/articles/52125.htmlhttp://m.tkk7.com/sl2cj/comments/52125.htmlhttp://m.tkk7.com/sl2cj/articles/52125.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/52125.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/52125.html*****************************
** ASP操作XML数据
** Author:caca
** qq:154222225
** Mail:root@3ney.com
** 2003.11.21@zzu
******************************

NO.1--建立一个XML数据库data.xml
<?xml version="1.0"?>
<records>
<record>
<name>caca</name>
<qq>154222225</qq>
<email>root@3ney.com</email>
</record>
<records>
NO.2--建立对象CreateObject
建立data.xml的对象先
set xmldoc=server.createobjcet("microsoft.xmldom")
xmldoc.load(server.mappath("data.xml")

NO.3--选定节点SelectNode
你想操作哪个Node,必须定位到这个节Ҏ不是,先看看这个data.xml有几个Node??
用一个递归函数搞定:
getnodes(xmldoc)

sub getnodes(node)
dim i
response.write("<br>NodeName:"&node.nodename&"<br>NodeTypeString:"&node.nodetypestring&"<br>NodeValue:"&node.nodevalue&"<br>Text:"&node.text&"<br>node.childnodes.length:"&node.childnodes.length&"<p>")

if node.childnodes.length<>0 then
for i=0 to node.childnodes.length-1
getnodes(node.childnodes(i))
next
end if
end sub
用这个函数后,可以看到q个data.xml?0个Node
q些Node可以很简单的定位:
xmldoc
xmldoc.childnodes(0)
xmldoc.childnodes(1)
xmldoc.childnodes(1).childnodes(0)
xmldoc.childnodes(1).childnodes(0).childnodes(0)
xmldoc.childnodes(1).childnodes(0).childnodes(0).text
xmldoc.childnodes(1).childnodes(0).childnodes(1)
xmldoc.childnodes(1).childnodes(0).childnodes(1).text
xmldoc.childnodes(1).childnodes(0).childnodes(2)
xmldoc.childnodes(1).childnodes(0).childnodes(2).text
是不是定位很单呀,q有个方?比如定位<name>
xmldoc.selectsinglenode("http://name")

NO.4--l节点赋?修改节点的?
学会了定位节?利用其属?可以修Ҏ者赋g
例如,?lt;name>的值caca改ؓwawa
xmldoc.selectsinglenode("http://name").text="wawa"
xmldoc.save(server.mappath("data.xml"))
搞定!
NO.5--创徏新的节点CreatenewNode
用createelement或者createnode("","","")
例如:在record下新Z<age>,只需要一句就搞定:
xmldoc.selectsinglenode("http://record").appendchild(xmldoc.createelement("<age>"))
l?lt;age>赋?br />xmldoc.selectsinglenode("http://age").text="20"
xmldoc.save(server.mappath("data.xml"))
搞定!
NO.6--删除一个节点DeleteNode
你必L你惛_除的q个节点的父节点,以及q个节点的特?br />例如:删除<qq>节点
xmldoc.selectsinglenode("http://record").removechild(xmldoc.selectsinglenode("http://qq"))
例如:删除那个<name>=caca?lt;record>
xmldoc.selectsinglenode("http://records").removechild(xmldoc.selectsinglenode("http://record[name='caca']))
xmldoc.save(server.mappath("data.xml"))
搞定!
只有能熟l这6条code,用asp控制xml数据?也就差不多了...
{两天写个XML留言本子来也不是很复杂的(以前用vbs写的,可以查询,可以?/font> http://www2.zzu.edu.cn/ie/dvbbs 看看).

]]>
 用FSO操作 xml http://m.tkk7.com/sl2cj/articles/51878.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Sat, 10 Jun 2006 11:34:00 GMThttp://m.tkk7.com/sl2cj/articles/51878.htmlhttp://m.tkk7.com/sl2cj/comments/51878.htmlhttp://m.tkk7.com/sl2cj/articles/51878.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51878.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51878.html  用FSO操作 xml

作者: colordancer  旉Q?2006-04-07 文档cdQ原创 来自Q?/font> 蓝色理想
览l计 total:4346 | year:4346 | Quarter:4346 | Month:118 | Week:78 | today:5

试了一下,xmlDoc.save()行不同,p着用fso做了出来?br />整理一下,供大家discuss?/font>

׃用js操作本地xml文g之后save时会permission deniedQ所以据我所知就只能通过FSO来做。而用FSOQ基本上׃文g是否是xml无关?/font>

xml文gQ?/font>

<root>
  <parent>
    <child1>one</child1>
    <child2>one</child2>
  </parent>
  <parent>
    <child1>two</child1>
    <child2>two</child2>
  </parent>
  <parent>
    ...
  </parent>
</root>

var temp;//要操作的数据

//d节点
function add(root,parent,child1,child2){
 try{
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  var fileOpen = fso.OpenTextFile("*.xml",1);
  var fileContent = fileOpen.ReadAll();
  fileOpen.close();

  if(fileContent.toString().indexOf(temp) !=-1){
   alert(temp+"was already in data.");
  }else{
   fileContent = fileContent.replace("</"+root+">","");
   fileContent += "<"+parent+"><"+child1+">";
   fileContent += ...;
   fileContent += "</"+child1+"><"+child2+">";
   fileContent += ...;
   fileContent += "</"+child2+"></"+parent+"></"+root+">";
   var fileWrite = fso.OpenTextFile("*.xml",2)
   fileWrite.write(fileContent);
   fileWrite.close();
   alert("add successfully!")
  }
 }catch(e){
  alert("fail to add.");
 }
}


//删除节点
function del(root,parent,child1,child2){
 try{
  if( confirm("are you sure to delete symbol:"+temp+"?" ) ){
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var fileOpen = fso.OpenTextFile("*.xml",1);
   var fileContent = fileOpen.ReadAll();
   fileOpen.close();
   
   var parentArr = fileContent.split("</"+parent+">");
   var symbolPos = -2;//不一定是2Q只?lt;0卛_
   for (var i=0; i<parentArr.length-1; i++){
    if(parentArr[i].indexOf(temp) != -1){
    symbolPos = i;
    continue;
    }
    parentArr[i] += "</"+parent+">"; 
   }
   if (symbolPos == -2){
    alert(temp+" not found in data.")
   }else{
    if(symbolPos == 0){
     parentArr[0] = "<"+root+">";
    }else{
     parentArr.splice(symbolPos,1);
    }
    fileContent = parentArr.toString().replace(/,/g,"")
    var fileWrite = fso.OpenTextFile("*.xml",2);
    fileWrite.write(fileContent);
    fileWrite.close();
    alert("deleted successfully!");
   }
  }
 }catch(e){
  alert("fail to delete.");
 }

基本思\Q?/font>

d节点
1Q读入原先xml文g所有字W,保存为fileContent;
2Q去除根l点的封闭节点,?lt;/root>;
3QfileContent += <parent><child1>..</child1><child2>...</child2></parent>;
4QfileContent += </root>;
5Q写入xml文gQ关闭?br />基本上就是用手动输入来代替xml的CreateNode?/font>

删除节点
1Q?/strong>d原先xml文g所有字W,保存为fileContent;
2Q?/strong>以parent来分割fileContentQ保存ؓparentArr[];
3Q?/strong>循环搜烦parentArr[i]Q利用indexOf(parentArr[i])来判断要 删除的节炚w的内?是否出现在parentArr[i];如果没有扑ֈQ则parentArr[i] += parent用来补上split时丢qparentQ如果找CQ则不用 += parent, q且记录i的?
4Q?/strong>parentArr.splice(i,1)Q删去节点;
5Q?/strong>parentArr.toString().replace(/,/g,"")Q用来去除逗号;
6Q?/strong>写入xml文gQ关闭?/font>

注意Q?/strong> 要注意split带来的节点不易匹配的问题Q所?parentArr[i] += parent 时要心?当然split不一定按parentQ哪个节Ҏ晰就按哪个split?/font>

看v来好像js操作本地文g没什么意义,呵呵Q不q由于看到好像没有多h用fso操作xmlq,所以就试下Q换换思\Q^时fso用得也很。欢q批评指正~:D



]]>
关键词:Windows IIS下配|支持PHP+MYSQLhttp://m.tkk7.com/sl2cj/articles/51512.htmlblog搬家?-[www.ialway.com/blog]blog搬家?-[www.ialway.com/blog]Thu, 08 Jun 2006 14:19:00 GMThttp://m.tkk7.com/sl2cj/articles/51512.htmlhttp://m.tkk7.com/sl2cj/comments/51512.htmlhttp://m.tkk7.com/sl2cj/articles/51512.html#Feedback0http://m.tkk7.com/sl2cj/comments/commentRss/51512.htmlhttp://m.tkk7.com/sl2cj/services/trackbacks/51512.htmlWindows IIS下配|支持PHP+MYSQL

Apache下支持PHP的配|方法比较简单,q里׃写了

一、Y件准备:以下均ؓ截止2005-4-20的最新正式版?/font>
PHPQ?.0.4Q:http://cn.php.net/get/php-5.0.4-Win32.zip/from/a/mirror

MySQLQ?.1.11Q:http://www.skycn.com/soft/1262.html

http://dev.mysql.com/downloads/mysql/4.1.html

Zend OptimizerQ?.5.7Q:http://www.zend.com/store/free_download.php?pid=13

phpMyAdminQ?.6.2Q:http://www.skycn.com/soft/10687.html
http://www.crsky.com/SoftView/SoftView_4190.html

假设 C:\ Z现在所使用操作pȝ的系l盘Q如果你目前操作pȝ不是安装?C:\ Q请自行修改?br />
二、安?PHP Q?/font>

Q?Q、下载后得到 php-5.0.4-Win32.zip Q解压至C:\Inetpub\phpQ这个\径可以随意,不过下面要是用到q个路径Q请相应修改Q;

Q?Q、再C:\Inetpub\php目录下的所有dll文gQ主要是C:\Inetpub\php下C:\Inetpub\php\ext下的DLL文gQ拷到c:\Windows\system32下,覆盖已有的dll文gQ?br />

Q?Q、将C:\PHP目录下的php.exe、php-win.exe和php.ini-dist三个文g拷到C:\Windows Q?Windows 2000 下ؓ C:\WINNTQ下Q?C:\Windows\php.ini-dist改名为php.ini,然后用记事本打开Q利用记事本的查扑֊能搜?br />
 
register_globals = Off

Q将 Off Ҏ On Q?br />再搜?br />
extension_dir =

Qƈ其路径指到你的 PHP 目录下的 extensions 目录Q比如:extension_dir = "C:\Inetpub\php\ext" Q?br />搜烦扑ֈ

;Windows Extensions

下面列丄

;extension=php_dbase.dll

可?/font>

;extension=php_gd2.dll

q个是用来支持GD库的Q一般需要,必?/font>

 
;extension=php_ldap.dll

可?/font>

;extension=php_mbstring.dll

q不选一般用PHPMYADMIN会出U色提示Q故必?/font>

  
;extension=php_mssql.dll

q个是用来支持MSSQL的,可?/font>

  
;extension=php_mysql.dll

q个是用来支持MYSQL的,要支持MYSQL必?/font>
这些前?Q?LQ其他的你需要的也可以去掉前面的;然后关闭保存该文件?br />本h配置成功后的PHP.INI文gCZQ?br />http://xqin.com/iis/php.ini

Q?Q、配|?IIS 使其支持 PHP Q?br />
首先必须定pȝ中已l正安?IIS Q如果没有安装,需要先安装 IIS Q安装步骤如下:

打开览器,输入Q?a href="http://localhost/" target="_blank">http://localhost/Q看到成功页面后q行下面的操作:

PHP 支持 CGI ?ISAPI 两种安装模式Q推荐?ISAPI 模式。这里只解介l?ISAPI 模式安装ҎQ?/font>ISAPI 模式安装步骤Q?br />
在“控刉李쀝的“管理工具”中选择“Internet 服务理器”,打开 IIS 后停止服务,然后在左侧“你需要支持PHP的Web站点”比如“默认Web站点”上单击右键选择“属性”,在打开的?Web 站点属性”窗口的“ISAPI {选器”标{N扑ֈq点几Z添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:PHP Q再可执行文g指向 php5isapi.dll 所在\径,如:C:\Inetpub\php\php5isapi.dll ?br />

打开“Web 站点属性”窗口的“主目录”标{,扑ֈq点几Z配|”按钮,在弹出的“应用程序配|”窗口中扑ֈq点几Z添加”按钮,在弹出的H口中新增一个扩展名映射Q扩展名?.php Q单几Z浏览”将可执行文件指?php5isapi.dll 所在\径,如:C:\Inetpub\php\php5isapi.dllQ然后一路确定即可。如果还x持诸?.php3 Q?phtml {扩展名?PHP 文gQ可以重复“添加”步骤?br />
再打开“Web 站点属性”窗口的“文档”标{,扑ֈq点几Z添加”按钮,向默认的 Web 站点启动文档列表中添?index.php V您可以?index.php 升到最高优先Q这P讉K站点时就会首先自动寻扑ƈ打开 index.php 文档?br />
定 Web 目录的应用程序设|和执行许可中选择为纯脚本Q然后关?Internet 信息服务理器,在命令提C符中执行如下命令:

net stop w3svc
net stop iisadmin
net start w3svc
然后在“Internet 服务理器”左边的“WEB服务扩展”中讄ISAPI 扩展允许QActive Server Pages 允许

打开览器,输入Q?a href="http://localhost/" target="_blank">http://localhost/Q看到成功页面后Q在 IIS 根目录下新徏一?phpinfo.php Q内容如下:

  CODE:[Copy to clipboard]  
<?php
phpinfo();
?>

打开览器,输入Q?a href="http://localhost/phpinfo.php" target="_blank">http://localhost/phpinfo.phpQ将昄当前服务器所支持 PHP 的全部信息,可以看到 Server API的模式ؓQISAPI ?br />

三、安?MySQL Q?/font>

    如果你下载的?Windows Essentials (x86) Q将得到 mysql-4.1.11-essential-win.exe ,直接双击安装卛_。这里本人安装到C:\Inetpub\MySQLQ安装过E中会提CZ是不是立卌行配|,选择否即可完成安装。安装完毕后Q在“开始”菜单的“运行”中输入QC:\Inetpub\MySQL\bin\mysqld-nt -install Q运行成功之后再输入Qnet mysql start Q将会启?MySQL 服务Q如果你q想较详l的配置 MySQL Q就误?C:\Inetpub\MySQL\bin 目录Q运?MySQLInstanceConfig.exe Q按提示操作卛_?br />
    如果你下载的?Windows (x86) Q解压后双击执行 Setup.exe 卛_Q步骤同上?br />
    如果你下载的?Without installer (unzip in C:\) Q直接解压到C:\Inetpub\MySQLQ在“开始”菜单的“运行”中输入Q?C:\Inetpub\MySQL\bin\mysqld-nt.exe Q运行成功之后再输入Qnet mysql start Q即可启?MySQL 服务?br />

为MYSQL讄密码Q确保安全:
一般菜单里面有配置向导MySQL Server Instance Config WizarQ运行后按下面步骤配|设|ROOT密码卛_


ROOT密码Q徏议社讄复杂点,保服务器安全!

也可以在MySQL Command Line Client里面用命令配|:
首先在打开DOSH口Q然后进入目?mysqlbinQ再键入命omysql -uroot -pQ回车后提示你输密码Q如果刚安装好MYSQLQ超U用户root是没有密码的Q故直接回R卛_q入到MYSQL中了QMYSQL的提C符是:mysql>

修改密码?
格式Qmysqladmin -u用户?-p旧密?password 新密?
例:lroot加个密码xqin.com首先在DOS下进入目录mysqlbinQ然后键入以下命?
mysqladmin -uroot -password xqin.com
注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?br />
然后执行:
SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('xqin.com');
q里的命令是׃MySQL 4.1 及其后版本验证协议用的密码哈希法与老的客户端不兼容,在PHPMYADMIN里用正确密码登陆也会提示Q?br />Client does not support authentication protocol requested
by server; consider upgrading MySQL client
所以是为后面正用PHPMYADMIN做准?/font>

q样ROOT密码p|ؓxqin.com?br />
四、安?Zend Optimizer Q?/font>

    下蝲后得?ZendOptimizer-2.5.7-Windows-i386.exe Q直接双d装即可,安装q程要你选择 Web Server Ӟ选择 IIS Q然后提CZ是否 Restart Web ServerQ选择是,完成安装之前提示是否备䆾 php.ini Q点定后安装完成。需要注意的是:如果您的PHP?.3以上版本Q那么就不要用缺省安装,而应该用定制安装q择 PHP的版本ؓPHP 4.3.XQ方能正安装,否则会说版本不支持?br />我这里安装到C:\Inetpub\Zend

    Zend Optimizer 的安装向g自动Ҏ你的选择来修?php.ini 帮助你启动这个引擎。下面简单介l一?Zend Optimizer 的配|选项。以下ؓ本h安装完成?php.ini 里的默认配置代码Q分号后面的内容为注释)Q?br />zend_extension_ts="C:\Inetpub\Zend\lib\ZendExtensionManager.dll"
;Zend Optimizer 模块在硬盘上的安装\径?br />zend_extension_manager.optimizer_ts="C:\Inetpub\Zend\lib\Optimizer-2.5.7"
;优化器所在目录,默认无须修改?br />zend_optimizer.optimization_level=15
;优化E度Q这里定义启动多个优化q程Q默认值是 15 Q表C同时开?10 个优化过E中?1-4 Q我们可以将q个值改?1023 Q表C开启全?0个优化过E?br />
调用phpinfo()函数后显C:
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies with Zend Optimize
r v2.1.0, Copyright (c) 1998-2003, by Zend Technologies 则表C安装成功?

安装GD?
q一步在前面PHP.INI配置中实际上已经安装好了~

在php.ini里找?"extension_dir",然后\径指向extensionQ如下(假设你的php安装?
径ؓQC:\Inetpub\php、设|extension_dir = "C:\Inetpub\php、ext"Q完成这步后Q在php.ini里找?extension=php_gd2.dll"q一行,q且L前面的分Pgd库安装完成,用echophpinfo();试是否成功Q?

五、安?phpMyAdminQ?/font>
下蝲得到 phpMyAdmin-2.6.0.zip Q将其解压到 IIS 根目录,扑ֈq打开 config.inc.php Q做以下修改Q?br />
搜烦$cfg['PmaAbsoluteUri']Q设|你的phpmyadmin的URLQ如Q?cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin/'; 注意q里假设phpmyadmin在默认站点的根目录下
搜烦$cfg['blowfish_secret']Q设定好root密码后这里也要填写比如ROOT密码xqin.com则设|ؓ$cfg['blowfish_secret'] = 'xqin.com';
搜烦$cfg['DefaultLang'] Q将其设|ؓ zh-gb2312 Q?br />搜烦$cfg['DefaultCharset'] Q将其设|ؓ gb2312 Q?br />搜烦$cfg['Servers'][$i]['auth_type']Q默认ؓconfigQ是不安全的Q不推荐Q推荐用cookieQ将其设|ؓ$cfg['Servers'][$i]['auth_type']     = 'cookie';
注意q里如果讄为config请在下面讄用户名和密码Q例如:
$cfg['Servers'][$i]['user']          = 'root';      // MySQL user-----MySQLq接用户
$cfg['Servers'][$i]['password']      = 'xqin.com';   
本h的配|文Ӟ仅供参考!
http://xqin.com/iis/config.inc.txt
打开览器,输入Q?a href="http://localhost/phpMyAdmin/" target="_blank">http://localhost/phpMyAdmin/ Q若 IIS ?MySQL 均已启动Q输入用户ROOT密码xqin.com卛_览数据?/a>内容?br />phpMyAdmin 的具体功能,h慢熟悉,q里不再赘述?br />x所有安装完毕?br />
上面帖子文字限制
补充Q?Windows 2000/XP 下的 IIS 安装Q?br />
?Administrator 帐号登陆pȝQ将 Windows 2000 安装光盘插入光盘驱动器,q入“控刉李쀝点几Z添?删除E序”,再点d侧的“添?删除 Windows lg”,在弹出的H口中选择“Internet 信息服务QIISQ”,点下面的“详l信息”按钮,选择lgQ以下组件是必须的:“Internet 服务理器”、“World Wide Web 服务器”和“公用文件”,定安装?br />
安装完毕后,在“控刉李쀝的“管理工具”里打开“服务”,查“IIS Admin Service”和“World Wide Web Publishing Service”两Ҏ务,如果没有启动Q将其启动即可?br />
Windows 2003 下的 IIS 安装Q?br />
׃ Windows 2003 ?IIS 6.0 集成在应用程序服务器中,因此安装应用E序服务器就会默认安?IIS 6.0 Q在“开始”菜单中点击“配|您的服务器”,在打开的“配|您的服务器向导”里左侧选择“应用程序服务器QIISQASP.NETQ”,单击“下一步”出现“应用程序服务器选项”,你可以选择和应用程序服务器一起安装的lgQ默认全选即可,单击“下一步”,出现“选择ȝ界面”,提示了本ơ安装中的选项Q配|程序将自动按照“选择ȝ”中的选项q行安装和配|?br />