二 php与XML、XSLT、Mysql的结合运用,代码篇

 更新时间:2016年11月25日 16:56  点击:2212
    <?php    
    require_once "DB.php";       //PEAR中的数据库处理类
    $dataType = "mysql" ;       //数据库类型
    $user = "root";          //用户名
    $pass = "abcd" ;           //密码
    $host="202.96.215.200";       //Mysql数据库服务器地址
    $db_name = "test";           //数据库名
    $dsn="$dataType://$user:$pass@$host/$db_name";     //连接数据库的DNS配制
    $db = DB::connect($dsn);        //连接数据库
    if (DB::isError($db))
    {       
        die ($db->getMessage());    //连接失败,输出出错信息
    }
    
    //下面二个是公共的函数
    /**
     * 读取xsl文档
     *
     * @param String $filename - xsl文件的名称
     * @return string
     */
    function readXsl($filename)
    {    
        if(false==file_exists($filename))
        {
       echo "要读取的文件<font color='red'>$filename</font>不存在</br />";    
主控
***************
* VMLgraph.htm
***************
<html>
<xmlns:v="urn:schemas-microsoft-com:vml" />
<head>
<meta http-equiv="Content-type" content="text/html; charset=gb2312">
<title>VML绘图板</title>
<style>
v:* { behavior: url(#default#VML); }
td { font-size:9pt; }
</style>
</head>
<script src="VMLgraph.js"></script>
<script src="XMLtool.js"></script>
<script language="JavaScript">
// 钩子函数,当选择了工具时被调用
function hooke() {
}
</script>
<body onLoad="init()">
<table>
<tr>
    <td width=61 valign=top>
     <span id="toolbox"></span><br>
     <span id="linebox"></span><br>
     <span id="opacity1"></span><br>
    </td>
    <td valign=top>
     <span id="view" align=left valign=top>
    你的浏览器可能不支持VML!请使用IE5+。需要xml3.0支持。<br>
    最佳效果出现在IE6。
     </span>
    </td>
    <td valign=top>
     <input type=button value="刷新" style="height:16; border:1px solid #C0C0C0;" onClick="view.innerHTML=tree(canvas.documentElement,0)">
     <input type=button value="保存" style="height:16; border:1px solid #C0C0C0;" onClick="saveXML()"><br><br>
     <span id="gradientBox"></span><br>
example1.php
<?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$xmlstring = $sql2xmlclass->getxml("select * from bands");
?>


XML是作为数据交换标准而出现的。Java和.NET都内在支持XML,但是其它平台上的开发者也不用担心自己被这项技术所遗弃了。PHP就是一个颇受欢迎的支持XML的脚本环境。

在本文中,我将向你介绍利用诸如PHP和MySQL这样的开放源码工具来处理XML的过程。我将以执行一个MySQL查询并把从查询所得到数据格式化为XML为例来加以说明。最后,在开始埋头编写代码之前,我将介绍如何把XML写入文件并检测系统设置。
为了可以运行本文所给出的代码,你需要能过运行PHP和MySQL,而且为了充分利用这些例子,你还需要知道主机名、用户名和口令。例子中的MySQL数据库的格式如图A所示。让我们看看如何用PHP来连接该数据库。
图A
用PHP建立数据库连接
下面的PHP脚本建立到数据库的连接并执行一个查询:

<?php
$db_name = "xrandomusa_4";
$connection = mysql_connect("MySQL.somewhere.com", "username", "password") or die("Could not connect.");
$table_name = 'pages';

查询MySQL
在MySQL连接建立之后,你必须用该连接来建立当前数据库。下面的代码就是用来完成这个任务的:

$db = mysql_select_db($dbName, $link);
现在,用一个SQL语句来选择$table_name中的所有行:
$query = "select * from " . $table_name;
如有必要,你可以随后添加属性。现在,如下执行查询:
$result = mysql_query($query, $connection) or die("Could not complete database query");
$num = mysql_num_rows($result);
你可以通过PHP.net网站来获得关于所有MySQL函数的参考资料。
建立并编写XML
现在,你应该已经做好了建立新XML文档的准备了。这有许多种方法,不过我认为清单A中所用到的方法可以满足绝大多数目的。
现在我们详细介绍这一过程。变量num表示你查询的数据行出现与否,它对MySQL的mysql_num_rows函数是可测的。变量$file包含了一个指针,该指针指向PHP在文件系统中成功的搜索到results.xml时所产生文件对象。如果找到result.xml,则创建你的PHP文件对象以及指定文件,且其属性是可写的。现在你可以把一个变量的内容打印到创建后的文件(由于你的目录已经设置为允许PHP写文件,所以这么做是没有问题的)。
注意,从安全的角度来考虑,在实际的应用程序开发中这么做其实是很愚蠢的。为了确保你能够安全的实现本文所涉及的概念,你应该为你所希望打开并写入的文件提供完全路径,并确保该文件位于你的Web根目录之下。
<?php
/**
* DOMXML函数笔记
* 连接php_domxml.dll后
* 用get_defined_functions()得到domxml支持函数
*
* 目前domxml不支持非iso-8859-1以外的语言声明
* <?xml version="1.0" encoding="iso-8859-1"?> 支持
* <?xml version="1.0" encoding="gb2312"?> 不支持
* <?xml version="1.0"?> 因此需要改造成这样,可能需要
* utf8_encode() utf8_decode() 函数进行处理
*
* 函数列表
* string domxml_version(void)    返回domxml的版本号
* object xmldoc(string str)    从字符串创建XML的Domdocument对象
* object xmldocfile(string filename)     从文件创建XML的Domdocument对象
* object xmltree(string str)     解析xml文档,返回树状结构,不能用domxml函数改变
* resource domxml_add_root(resource doc,string name)    添加根节点
* string domxml_dumpmem(resource doc)    将domxml对象转化为XML串。这个函数有一个问题,他会在第一个汉字前面加一个扩展ascii字符,形如&#nnn;
* domxml_node_attributes
* domxml_elem_get_attribute
* domxml_elem_set_attribute
* array domxml_node_children(object doc|node)    返回子节点
* domxml_node_new_child
* object domxml_node(string name)    创建一个节点节点
* domxml_node_unlink_node
* int domxml_node_set_content(resource doc,string content)    设置节点内容
* object domxml_new_xmldoc(string version)    创建新的空XML对象
* xpath_new_context
* xpath_eval
* xpath_eval_expression
* xptr_new_context
* xptr_eval
* object domxml_root(object doc)    返回根节点
* array domxml_attributes(resource note)    获取节点属性
* object domxml_get_attribute(resource doc,string name)    读取属性
[!--infotagslink--]

相关文章

  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • mysql的3种分表方案

    一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31