example1.php
更新时间:2016年11月25日 16:56 点击:1455
example1.php
<?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$xmlstring = $sql2xmlclass->getxml("select * from bands");
?>
<?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 />";
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) 读取属性
<?
// 本人不熟悉XML,可能注解对XML的描述有误
// 这只是个思想,要实现的话应该略加修整,可以把一些不常用条件查询的数据用XML保存
// 如虚拟社区的 用户资料,一般只有用户自己或其他用户指定了他的USERNAME才会显示
// 剩下每次都要开启、查询、解释数据集、关闭数据库的消耗。
define("enter",chr(13).chr(10));
class DATA_XML //关键!!!一个自定义类
{
var $parser; //XML解释器
var $tags; //XML标签
var $on; //
var $root; // 根元素
var $Data = array(); // 元素数组
function DATA_XML($filename,$root) //类初始函数 filename文件名,root根元素
{
$this->root = $root; // 初始根元素
$this->parser = xml_parser_create();//创建解释对象
xml_set_object(&$this->parser,&$this);//设置对象
xml_set_element_handler($this->parser,"tag_on","tag_off");//设置元素管理函数
xml_set_character_data_handler($this->parser,"getdata"); //设置数据管理事件
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); //要求严格区分大小写
if( file_exists($filename) ) //找到文件吗?
{//找到
$fp = fopen($filename,"r"); // 只读打开
$c = fread($fp,filesize($filename)); //读取数据
fclose($fp);//关闭
$this->parse($c); //设置解释对象
}
else
{
echo "ooooo"; //!?!好象是调试时用的,去掉 else好了
}
}
function parse($data)//解释函数
{
xml_parse($this->parser,$data);
}
function tag_on($parser,$tag,$attributes)//发现元素触发函数
{
$this->on = true; // 已经触发过
$this->tags = $tag;
//echo $tag;
}
function tag_off($parser,$tag) //元素结素函数
{
$this->on = false; // 元素结素
}
function getdata($parser,$cdata) //取出元素
{
if($this->on && $this->tags!=$this->root)
{//验证一下比较好,(现在是否为元素的开始,并且不是根元素?)
$this->Data[$this->tags]=trim($cdata);
<?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$xmlstring = $sql2xmlclass->getxml("select * from bands");
?>
<?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 />";
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) 读取属性
<?
// 本人不熟悉XML,可能注解对XML的描述有误
// 这只是个思想,要实现的话应该略加修整,可以把一些不常用条件查询的数据用XML保存
// 如虚拟社区的 用户资料,一般只有用户自己或其他用户指定了他的USERNAME才会显示
// 剩下每次都要开启、查询、解释数据集、关闭数据库的消耗。
define("enter",chr(13).chr(10));
class DATA_XML //关键!!!一个自定义类
{
var $parser; //XML解释器
var $tags; //XML标签
var $on; //
var $root; // 根元素
var $Data = array(); // 元素数组
function DATA_XML($filename,$root) //类初始函数 filename文件名,root根元素
{
$this->root = $root; // 初始根元素
$this->parser = xml_parser_create();//创建解释对象
xml_set_object(&$this->parser,&$this);//设置对象
xml_set_element_handler($this->parser,"tag_on","tag_off");//设置元素管理函数
xml_set_character_data_handler($this->parser,"getdata"); //设置数据管理事件
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); //要求严格区分大小写
if( file_exists($filename) ) //找到文件吗?
{//找到
$fp = fopen($filename,"r"); // 只读打开
$c = fread($fp,filesize($filename)); //读取数据
fclose($fp);//关闭
$this->parse($c); //设置解释对象
}
else
{
echo "ooooo"; //!?!好象是调试时用的,去掉 else好了
}
}
function parse($data)//解释函数
{
xml_parse($this->parser,$data);
}
function tag_on($parser,$tag,$attributes)//发现元素触发函数
{
$this->on = true; // 已经触发过
$this->tags = $tag;
//echo $tag;
}
function tag_off($parser,$tag) //元素结素函数
{
$this->on = false; // 元素结素
}
function getdata($parser,$cdata) //取出元素
{
if($this->on && $this->tags!=$this->root)
{//验证一下比较好,(现在是否为元素的开始,并且不是根元素?)
$this->Data[$this->tags]=trim($cdata);
相关文章
Java8 实现stream将对象集合list中抽取属性集合转化为map或list
这篇文章主要介绍了Java8 实现stream将对象集合list中抽取属性集合转化为map或list的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05- 这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
解决:failed to open stream: No such file or directory in
本教程来给各位同学介绍failed to open stream: No such file or directory in解决办法,有需要了解的朋友可进入参考。 Warning: include_once(./include/main.i...2016-11-25- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
- 这篇文章主要介绍了c++中system("pause")的作用和含义,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2020-04-25
- 今天小编就为大家分享一篇解决Pycharm的项目目录突然消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
- pycharm2021激活码是一个可以轻松帮助用户免费激活pycharm2021.1软件的文件,虽然说pycharm现在只是推出了2021.1的EAP版,但是如果你想先率先体验一波,那么就可以利用小编提供的这个激活码来进行使用啦,并这个激活码是永久有效的...2021-03-30
- PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
- 这篇文章主要介绍了pycharm实现print输出保存到txt文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-02
- 这篇文章主要介绍了pycharm 实现光标快速移动到括号外或行尾的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-06
超实用Internet Download Manager(IDM)破解注册码,全版本通用
IDM下载器是一个十分好用的文件下载工具。IDM下载器它能够帮助你提升5倍的下载速度,强大的续传功能,让你不再担心因网络问题、计算机宕机、停电等原因所造成的数据不全问题,下面小编给大家带来了InternetDownloadManager(IDM)破解注册码,感兴趣的朋友参考下吧...2023-01-06vue项目页面嵌入代码块vue-prism-editor的实现
这篇文章主要介绍了vue项目页面嵌入代码块vue-prism-editor的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-30PHP用DOM方式处理HTML之《Simple HTML DOM》
近经常需要采集一些网上的数据,发现一个PHP处理HTML的利器 simple html dom,看了一下文档,使用非常方便,关键是能够用CSS选择器来访问DOM树,和jquery相似,实在是难得的利器...2016-11-25- 本篇文章是对C#中WinForm控件之Dock顺序调整进行了详细的分析介绍,需要的朋友参考下...2020-06-25
- PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
借助jQuery我们可以轻松地堆DOM元素进行向上、向下遍历以及同级的遍历,本文我们即来整理jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结:...2016-07-25- 这篇文章主要介绍了WebStorm无法正确识别Vue3组合式API的解决方案,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下...2021-02-18
- 在DOM操作中,常常需要动态创建HTML内容,使文档在浏览器里的呈现效果发生变化,并且达到各种各样的人机交互目的....2016-04-27