使用PHP生成和获取XML格式数据
python请求并解析xml的几种方法
一、介绍在网络开发中,经常会遇到需要请求并解析xml格式的数据的情况,而Python作为一种十分流行的编程语言,提供了多种方法来实现这一功能。
本文将介绍Python中请求并解析xml的几种方法,以帮助读者更好地应对实际开发中的需求。
二、使用urllib和xml.etree.ElementTree1. 使用urllib库发送HTTP请求获取xml数据``` pythonimport urllib.requesturl = "xxx"response = urllib.request.urlopen(url)xml_data = response.read()```2. 使用xml.etree.ElementTree库解析xml数据``` pythonimport xml.etree.ElementTree as ETroot = ET.fromstring(xml_data)3. 示例代码``` pythonimport urllib.requestimport xml.etree.ElementTree as ETurl = "xxx"response = urllib.request.urlopen(url)xml_data = response.read()root = ET.fromstring(xml_data)```三、使用requests和xmltodict1. 使用requests库发送HTTP请求获取xml数据``` pythonimport requestsurl = "xxx"response = requests.get(url)xml_data = response.text2. 使用xmltodict库解析xml数据``` pythonimport xmltodictxml_dict = xmltodict.parse(xml_data) ```3. 示例代码``` pythonimport requestsimport xmltodicturl = "xxx"response = requests.get(url)xml_data = response.textxml_dict = xmltodict.parse(xml_data) ```四、使用lxml库1. 使用requests库发送HTTP请求获取xml数据``` pythonimport requestsurl = "xxx"response = requests.get(url)xml_data = response.text```2. 使用lxml库解析xml数据``` pythonfrom lxml import etreexml_tree = etree.fromstring(xml_data)```3. 示例代码``` pythonimport requestsfrom lxml import etreeurl = "xxx"response = requests.get(url)xml_data = response.textxml_tree = etree.fromstring(xml_data)```五、总结本文介绍了Python中请求并解析xml的几种方法,包括使用urllib和xml.etree.ElementTree、requests和xmltodict、以及lxml库。
python requests xml 构建
python requests xml 构建第一:在Web开发中,经常需要与其他系统进行数据交互,其中XML (eXtensible Markup Language)是一种常见的数据格式。
本文将介绍如何使用Python中的Requests库构建XML请求,发送到服务器,并解析XML响应。
第二:Requests库简介Requests是Python中用于HTTP请求的一种流行的库,它提供了简单而优雅的API,用于处理HTTP请求和响应。
可以通过该库轻松地构建和发送HTTP请求。
安装Requests库:bashpip install requests第三:构建XML请求1.准备XML数据:–在构建XML请求之前,首先需要准备XML格式的数据。
可以使用字符串表示XML数据,也可以通过构建XML树的方式。
pythonxml_data ="""<request><username>john_doe</username><password>secret_pass</password></request>"""2.使用Requests发送XML请求:–使用Requests库的post方法,将XML数据作为data参数发送到服务器。
pythonimport requestsurl ="https://examplecom/api"headers ={'Content-Type': 'application/xml'}response =requests.post(url, data=xml_data, headers=headers)3.带有参数的XML请求:–如果请求需要包含URL参数,可以使用params参数。
pythonparams ={'key': 'value'}response =requests.post(url, data=xml_data, headers=headers, params=params)第四:处理XML响应1.解析XML响应:–使用第三方库,如xml.etree.ElementTree,解析XML 响应。
PHP操作XML详解
[高端技术] PHP操作XML详解XML是一种流行的半结构化文件格式,以一种类似数据库的格式存储数据。
在实际应用中,一些简单的、安全性较低的数据往往使用XML文件的格式进行存储。
这样做的好处一方面可以通过减少与数据库的交互性操作提高读取效率,另一方面可以有效利用XML的优越性降低程序的编写难度。
PHP提供了一整套的读取XML文件的方法,很容易的就可以编写基于XML的脚本程序。
本章将要介绍PHP与XML的操作方法,并对几个常用的XML类库做一些简要介绍。
1 XML简介XML是“可扩展性标识语言(eXtensible Markup Language)”的缩写,是一种类似于HTML 的标记性语言。
但是与HTML不同,XML主要用于描述数据和存放数据,而HTML主要用于显示数据。
XML是一种“元标记”语言,开发者可以根据自己的需要创建标记的名称。
例如,下面的XML 代码可以用来描述一条留言。
复制代码1.<thread>2.<title>Welcome</title>3.<author>Simon</author>4.<content>Welcome to XML guestbook!!</content>5.</thread>其中,<thread>与</thread>标签标记了这是一段留言。
在留言中有标题、作者、内容,完整的表述了一条留言信息。
在一个XML文件的顶部,通常使用<?xml version=”1.0″?>来标识XML数据的开始和XML 数据使用标准的版本信息。
在浏览器中访问XML文件可以看到层次分明的XML数据信息,如图1所示。
XML的发展非常迅速,近些年来很多软件开发商都开始采用XML的开发标准进行应用程序的开发。
并且,很多新兴技术都架构在XML数据之上。
这意味着XML将与HTML一样成为Web技术不可或缺的一部分。
用PHP读取和编写XML DOM
有许多技术可用于用 PHP 读取和编写 XML。
本文提供了三种方法读取 XML:使用 DOM 库、使用 SAX 解析器和使用正则表达式。
还介绍了使用 DOM 和 PHP 文本模板编写 XML。
用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖。
实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务。
首先,需要学习一点关于 XML 的知识——它是什么,用它做什么。
然后,需要学习如何用 PHP 读取和编写 XML,而有许多种方式可以做这件事。
本文提供了 XML 的简短入门,然后解释如何用 PHP 读取和编写 XML。
什么是 XML?XML 是一种数据存储格式。
它没有定义保存什么数据,也没有定义数据的格式。
XML 只是定义了标记和这些标记的属性。
格式良好的 XML 标记看起来像这样:<name>Jack Herrington</name>这个<name>标记包含一些文本:Jack Herrington。
不包含文本的 XML 标记看起来像这样:<powerUp />用 XML 对某件事进行编写的方式不止一种。
例如,这个标记形成的输出与前一个标记相同:<powerUp></powerUp>也可以向 XML 标记添加属性。
例如,这个<name>标记包含 first 和 last 属性:<name first="Jack" last="Herrington" />也可以用 XML 对特殊字符进行编码。
例如,& 符号可以像这样编码:&包含标记和属性的 XML 文件如果像示例一样格式化,就是格式良好的,这意味着标记是对称的,字符的编码正确。
清单 1 是一份格式良好的 XML 的示例。
清单 1. XML 图书列表示例<books><book><author>Jack Herrington</author><title>PHP Hacks</title><publisher>O'Reilly</publisher></book><book><author>Jack Herrington</author><title>Podcasting Hacks</title><publisher>O'Reilly</publisher></book></books>清单 1 中的 XML 包含一个图书列表。
simplexmlelement 解析xml类方法
simplexmlelement 解析xml类方法SimpleXMLElement 是PHP 中用于解析XML 文档的类。
使用SimpleXMLElement 类可以轻松地读取、操作和输出XML 数据。
以下是使用SimpleXMLElement 类解析XML 文档的一些基本方法:1. 创建SimpleXMLElement 对象:php复制代码:$xmlString = '<root><element>Text</element></root>';$xml = new SimpleXMLElement($xmlString);2. 获取元素值:php复制代码:$value = $xml->element; // 返回"Text"3. 遍历元素:php复制代码:foreach ($xml->element as $item) {echo $item; // 输出"Text"}4. 访问属性:php复制代码:$attribute = $xml->element['attributeName']; // 获取attribute 的值5. 添加新元素:php复制代码:$newElement = $xml->addChild('newElement', 'New Value');6. 删除元素:php复制代码:unset($xml->element); // 删除element 元素7. 序列化SimpleXMLElement:php复制代码:$xmlString = $xml->asXML(); // 将SimpleXMLElement 对象转换为XML 字符串8. 获取元素的属性:假设有如下的XML:xml复制代码:<root><element attributeName="value">Text</element></root>要获取属性值,可以使用:php复制代码:$attributeValue = $xml->element['attributeName']; // 返回"value"9. 获取元素的子元素:如果XML 有如下结构:xml复制代码:<root><element>Text</element><child>Child Text</child></root>可以使用以下方法获取子元素:php复制代码:$childElement = $xml->child; // 返回"Child Text" 或访问子元素的其他属性或方法。
php 读取xml几种方法
php 读取xml几种方法一,什么是xml,xml有什么用途XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。
Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。
二,php读取xml的方法xml源文件<?xml version="1.0 encoding="UTF-8"?><humans><zhangying><name>张映</name><sex>男</sex><old>28</old></zhangying><tank><name>tank</name><sex>男</sex><old>28</old></tank></humans>1)DOMDocument读取xml<?php$doc = new DOMDocument();$doc->load('person.xml'); //读取xml文件$humans = $doc->getElementsByTagName( "humans" ); //取得humans标签的对象数组foreach( $humans as $human ){$names = $human->getElementsByTagName( "name" ); //取得name的标签的对象数组$name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>$sexs = $human->getElementsByTagName( "sex" );$sex = $sexs->item(0)->nodeValue;$olds = $human->getElementsByTagName( "old" );$old = $olds->item(0)->nodeValue;echo "$name - $sex - $old\n";}?>2)simplexml读取xml<?php$xml_array=simplexml_load_file('person.xml'); //将XML中的数据,读取到数组对象中foreach($xml_array as $tmp){echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";}?>3)用php正则表达式来记取数据<?php$xml = "";$f = fopen('person.xml', 'r');while( $data = fread( $f, 4096 ) ) {$xml .= $data;}fclose( $f );// 上面读取数据preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s", $xml, $humans ); //匹配最外层标签里面的内容foreach( $humans[1] as $k=>$human ){preg_match_all( "/\<name\>(.*?)\<\/name\>/", $human, $name ); //匹配出名字preg_match_all( "/\<sex\>(.*?)\<\/sex\>/", $human, $sex ); //匹配出性别preg_match_all( "/\<old\>(.*?)\<\/old\>/", $human, $old ); //匹配出年龄}foreach($name[1] as $key=>$val){echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;}?>4)xmlreader来读取xml数据<?php$reader = new XMLReader();$reader->open('person.xml');//读取xml数据$i=1;while ($reader->read()){ //是否读取if ($reader->nodeType == XMLReader::TEXT) { //判断node类型if($i%3){echo $reader->value; //取得node的值}else{echo $reader->value."<br>" ;}$i++;}}?>三,小结读取xml的方法很多,简单举几个。
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
php中DOMDocument简单⽤法⽰例代码(XML创建、添加、删除、修改)共分四个⽂件,分别是创建、增加、删除、修改四个功能,变量都是写死的,改⼀改⽤$_POST⽅式接收就可以⽤了//index.php 创建功能复制代码代码如下:<?php$xmlpatch = 'index.xml';$_id = '1';$_title = 'title1';$_content = 'content1';$_author = 'author1';$_sendtime = 'time1';$_htmlpatch = '1.html';$doc = new DOMDocument('1.0', 'utf-8');$doc -> formatOutput = true;$root = $doc -> createElement('root');//新建节点$index = $doc -> createElement('index');//新建节点$url = $doc -> createAttribute('url');//新建属性$patch = $doc -> createTextNode($_htmlpatch);//新建TEXT值$url -> appendChild($patch);//将$patch⽂本设为$url属性的值$id = $doc -> createAttribute('id');$newsid = $doc -> createTextNode($_id);$id -> appendChild($newsid);$title = $doc -> createAttribute('title');$newstitle = $doc -> createTextNode($_title);$title -> appendChild($newstitle);$content = $doc -> createTextNode($_content);//节点值$author = $doc -> createAttribute('author');$newsauthor = $doc -> createTextNode($_author);$author -> appendChild($newsauthor);$sendtime = $doc -> createAttribute('time');$newssendtime = $doc -> createTextNode($_sendtime);$sendtime -> appendChild($newssendtime);$index -> appendChild($id);//将$id设为index节点的属性,以下类同$index -> appendChild($title);$index -> appendChild($content);$index -> appendChild($url);$index -> appendChild($author);$index -> appendChild($sendtime);$root -> appendChild($index);//设置index为root字节点$doc -> appendChild($root);//设置root为跟节点$doc -> save($xmlpatch);//保存⽂件echo $xmlpatch . ' has create success';?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>XML操作</title></head><body></body></html>//add.php 增加功能(跟index.php⽂件差不多,主要就是加个load载⼊跟 $root = $doc -> documentElement获得跟节点复制代码代码如下:<?php$xmlpatch = 'index.xml';$_id = '2';$_title = 'title2';$_content = 'content2';$_author = 'author2';$_sendtime = 'time2';$_htmlpatch = '2.html';$doc = new DOMDocument();$doc -> formatOutput = true;if($doc -> load($xmlpatch)) {$root = $doc -> documentElement;//获得根节点(root)$index = $doc -> createElement('index');$url = $doc -> createAttribute('url');$patch = $doc -> createTextNode($_htmlpatch);$url -> appendChild($patch);$id = $doc -> createAttribute('id');$newsid = $doc -> createTextNode($_id);$id -> appendChild($newsid);$title = $doc -> createAttribute('title');$newstitle = $doc -> createTextNode($_title);$title -> appendChild($newstitle);$content = $doc -> createTextNode($_content);$author = $doc -> createAttribute('author');$newsauthor = $doc -> createTextNode($_author);$author -> appendChild($newsauthor);$sendtime = $doc -> createAttribute('time');$newssendtime = $doc -> createTextNode($_sendtime);$sendtime -> appendChild($newssendtime);$index -> appendChild($id);$index -> appendChild($title);$index -> appendChild($content);$index -> appendChild($url);$index -> appendChild($author);$index -> appendChild($sendtime);$root -> appendChild($index);$doc -> save($xmlpatch);echo $_id . ' has been added in ' . $xmlpatch;} else {echo 'xml file loaded error!';}><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>XML操作-添加</title></head><body></body></html>//edit.php 修改功能(这⾥只修改title属性值跟节点值)复制代码代码如下:<?php$xmlpatch = 'index.xml';$_id = '2';$_title = 'has been changed';$_content = 'has been changed';$doc = new DOMDocument();$doc -> formatOutput = true;if($doc -> load($xmlpatch)) {$root = $doc -> documentElement;$elm = $root -> getElementsByTagName('index');$checkexist = 0;foreach ($elm as $new) {if($new -> getAttribute('id') == $_id) {$new -> setAttribute('title', $_title);$new -> nodeValue = $_content;//修改节点值,真是太意外了,没想到跟JS⼀样直接能赋值...//$new -> removeChild($new -> nodevalue);$checkexist = 1;}}if($checkexist == 0) {echo $_id . ' is not found in ' . $xmlpatch;} else {$doc -> save($xmlpatch);echo $_id . ' has been changed';}} else {echo 'xml file loaded error!';}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>XML操作-修改</title></head><body></body></html>//del.php 删除功能复制代码代码如下:<?php$xmlpatch = 'index.xml';$_id = '2';$doc = new DOMDocument();$doc -> formatOutput = true;if($doc -> load($xmlpatch)) {$root = $doc -> documentElement;$elm = $root -> getElementsByTagName('index');foreach ($elm as $new) {if($new -> getAttribute('id') == $_id) {if($root -> removeChild($new)) {echo $_id . ' has been deleted';} else {echo $_id . ' delete failed';}}}$doc -> save($xmlpatch);} else {echo 'xml file loaded error!';}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>XML操作-删除</title></head><body></body></html>总结⼀下,创建跟添加主要⽤的就是create跟appendChild,create后边跟Element就是创建节点,跟Attribute就是创建属性,TextNode就是创建值,然后appendChild就是设置从属关系,这么⼀看⾮常简单。
php的SimpleXML方法读写XML接口文件实例解析
php的SimpleXML⽅法读写XML接⼝⽂件实例解析在php5中读写xml⽂档是⾮常⽅便的,可以直接使⽤php的SimpleXML⽅法来快速解析与⽣成xml格式的⽂件,下⾯举例说明:创建⼀个SimpleXML对象有三种⽅法:1.复制代码代码如下:$xml="<personinfo><item><id>1</id><name>aaa</name><age>16</age></item><item><id>2</id><name>bbb</name><age>26</age></item></personinfo>";$rss=new SimpleXMLElement($xml);2.复制代码代码如下:$xml="<personinfo><item><id>1</id><name>aaa</name><age>16</age></item><item><id>2</id><name>bbb</name><age>26</age></item></personinfo>";$rss=simplexml_load_string($xml);3.复制代码代码如下:$rss=simplexml_load_file("rss.xml");//或者:$rss=simplexml_load_file("/rss.xml");//远程⽂档具体实例如下:复制代码代码如下:<?php$xml="<personinfo><item><id>1</id><name>aaa</name><age>16</age></item><item><id>2</id><name>bbb</name> <age>26</age></item></personinfo>";$rss=new SimpleXMLElement($xml);foreach($rss->item as $v){echo $v->name,'<br />';}echo $rss->item[1]->age;//读取数据echo '<hr>';$rss->item[1]->name='ccc';//修改数据foreach($rss->item as $v){echo $v->name,' <br /> ';//aaa <br /> ccc <br />}echo '<hr>';unset($rss->item[1]);//输出数据foreach($rss->item as $k=>$v){echo $v->name,' <br /> ';//aaa <br />}echo '<hr>';//添加数据$item=$rss->addChild('item');$item->addChild('id','3');$item->addChild('name','ccc_new');$item->addChild('age','40');foreach($rss->item as $k=>$v){echo $v->name,' <br /> ';//aaa <br /> ccc_new <br />}$rss->asXML('personinfo.xml');>进⼀步分析上⾯例⼦如下:复制代码代码如下://xml数据的读取//可以直接通过元素的名称来访问特定的元素。
php获取标签内容的方法
php获取标签内容的方法方法一:使用正则表达式PHP中可以使用正则表达式来匹配HTML标签,并提取其中的内容。
具体步骤如下:1. 使用file_get_contents函数读取HTML页面的内容,并保存在一个变量中。
2. 使用正则表达式来匹配指定的标签,例如匹配标题标签可以使用正则表达式"/<title>(.*?)<\/title>/"。
3. 使用preg_match函数来进行匹配,并将结果保存在一个变量中。
如果匹配成功,该变量将包含匹配到的标签内容。
4. 最后,可以通过echo语句将标签内容输出到页面上。
下面是一个示例代码:```php$html = file_get_contents('example.html');$pattern = '/<title>(.*?)<\/title>/';preg_match($pattern, $html, $matches);$title = $matches[1];echo $title;```方法二:使用DOM解析器PHP中提供了DOM解析器,可以方便地解析HTML文档,并提取其中的标签内容。
具体步骤如下:1. 使用DOMDocument类来加载HTML页面,并创建一个DOM 对象。
2. 使用DOM对象的getElementsByTagName方法来获取指定标签的元素集合。
3. 遍历元素集合,可以通过nodeValue属性来获取标签的内容。
4. 最后,可以通过echo语句将标签内容输出到页面上。
下面是一个示例代码:```php$doc = new DOMDocument();$doc->loadHTMLFile('example.html');$titles = $doc->getElementsByTagName('title');foreach ($titles as $title) {echo $title->nodeValue;}```方法三:使用XPathXPath是一种用于在XML文档中定位节点的语言,也可以用于HTML文档的解析。
php xmlwriter 方法
php xmlwriter 方法PHP XMLWriter 是一个用于生成 XML 文档的类。
它提供了一种简单而灵活的方式来创建和修改 XML 文件。
使用 XMLWriter 类,我们可以轻松地创建一个 XML 文档。
首先,我们需要创建一个 XMLWriter 对象,然后使用它的方法来添加元素、属性和文本内容。
XMLWriter 类的主要方法包括:startDocument、endDocument、startElement、endElement、writeElement、writeAttribute 和writeText。
startDocument 方法用于开始一个 XML 文档,并设置其版本和编码。
endDocument 方法用于结束 XML 文档的编写。
startElement 方法用于开始一个元素节点,并设置其名称。
endElement 方法用于结束当前元素节点的编写。
writeElement 方法用于添加一个完整的元素节点,包括开始和结束标签以及文本内容。
writeAttribute 方法用于添加一个元素节点的属性。
writeText 方法用于添加元素节点的文本内容。
通过这些简单的方法,我们可以灵活地创建和修改 XML 文档。
XMLWriter 类还提供了一些其他的方法,如设置缩进、格式化输出等。
总结一下,PHP XMLWriter 类是一个非常有用的工具,可以帮助我们轻松地创建和修改 XML 文档。
它提供了简单而灵活的方法,使我们可以快速地生成符合标准的 XML 文件。
无论是生成 RSS 订阅源、配置文件还是生成复杂的数据结构,XMLWriter 都是一个强大而实用的工具。
希望本文能够帮助大家更好地理解和使用PHP XMLWriter 类。
PHP (读取XML值)
Php读取XML再通过一个例子巩固一下:
XML文件(cy.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<LevelOne>
<LevelTwo>
<LevelThree id="1">This is Text One</LevelThree>
echo $value."<br />";
}
}
?>
cy.php输出结果:
1
2
3
4
5
6
为什么两次的cy.php不同,但输出结果是相同的?让我们来看下一个例子
==============
Php读取XML第五种情况
改变cy.xml,使cy.php保持第四种情况:
XML文件(cy.xml)如下:
<xml>
<main>
<list>1</list>
<list>2</list>
<list>3</list>
</main>
<main>
<list>4</list>
<list>5</list>
<list>6</list>
</main>
<m>
<list>7</list>
PHP中的生成XML文件的4种方法分享
PHP中的⽣成XML⽂件的4种⽅法分享⽣成如下XML串Xml代码复制代码代码如下:<?xml version="1.0" encoding="utf-8"?><article><item><title size="1">title1</title><content>content1</content><pubdate>2009-10-11</pubdate></item><item><title size="1">title2</title><content>content2</content><pubdate>2009-11-11</pubdate></item></article>使⽤纯粹的PHP代码⽣成字符串,并把这个字符串写⼊⼀个以XML为后缀的⽂件。
这是最原始的⽣成XML的⽅法,不过有效!复制代码代码如下:<?PHP$data_array = array(array('title' => 'title1','content' => 'content1','pubdate' => '2009-10-11',),array('title' => 'title2','content' => 'content2','pubdate' => '2009-11-11',));$title_size = 1;$xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";$xml .= "<article>\n";foreach ($data_array as $data) {$xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']);}$xml .= "</article>\n";echo $xml;// 创建XML单项function create_item($title_data, $title_size, $content_data, $pubdate_data){$item = "<item>\n";$item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n";$item .= "<content>" . $content_data . "</content>\n";$item .= " <pubdate>" . $pubdate_data . "</pubdate>\n";$item .= "</item>\n";return $item;}>使⽤DomDocument⽣成XML⽂件,创建节点使⽤createElement⽅法,创建⽂本内容使⽤createTextNode⽅法,添加⼦节点使⽤appendChild⽅法,创建属性使⽤createAttribute⽅法复制代码代码如下:<?php$data_array = array(array('title' => 'title1','content' => 'content1','pubdate' => '2009-10-11',),array('title' => 'title2','content' => 'content2','pubdate' => '2009-11-11',));// 属性数组$attribute_array = array('title' => array('size' => 1));// 创建⼀个XML⽂档并设置XML版本和编码。
使用PHP生成和获取XML格式数据
在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
生成XML格式数据我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,ag e分别记录学生的姓名、性别、年龄等信息。
CREATE TABLE `student` (`id` int(11) NOT NULL auto_increment,`name` varchar(50) NOT NULL,`sex` varchar(10) NOT NULL,`age` smallint(3) NOT NULL default '0',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;首先,建立createXML.php文件,先连接数据库,获取数据。
include_once ("connect.php"); //连接数据库$sql = "select * from student";$result = mysql_query($sql) or die("Invalid query: " . mysql_error());while ($row = mysql_fetch_array($result)) {$arr[] = array('name' => $row['name'],'sex' => $row['sex'],'age' => $row['age']);}这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试。
php如何创建xml文件 php写入xml
PHP如何创建XML文件及写入数据在PHP中,我们可以使用内置的DOMDocument类来创建和操作XML文件。
本文将介绍如何使用PHP创建XML文件,并演示如何在XML文件中写入数据。
1. 创建XML文件首先,我们需要创建一个DOMDocument对象,它将作为我们操作XML文件的主要工具。
下面的代码演示了如何创建一个空白的XML文件:$dom = new DOMDocument('1.0', 'UTF-8');在上述代码中,我们创建了一个名为dom的DOMDocument实例,并指定了XML文件的版本为1.0,字符编码为UTF-8。
2. 创建根元素接下来,我们需要在XML文件中创建一个根元素。
使用createElement方法可以创建一个新的元素,并使用appendChild方法将它添加到DOMDocument对象中。
下面的代码演示了如何创建一个名为root的根元素:$root = $dom->createElement('root');$dom->appendChild($root);在上述代码中,我们创建了一个名为root的元素,并将它添加到DOMDocument对象中。
3. 添加其他元素在XML文件中,我们可以添加任意数量的子元素。
以下是添加子元素的示例代码:$element = $dom->createElement('element');$root->appendChild($element);在上述代码中,我们创建了一个名为element的子元素,并将它添加到根元素中。
4. 设置元素的属性和值要为元素设置属性,我们可以使用setAttribute方法。
以下代码演示了如何设置元素的属性:$element->setAttribute('id', '1');在上述代码中,我们为名为element的元素设置了一个id属性,并将其值设置为1。
使用php操作xml教程
使⽤php操作xml教程php操作xml最近计划写个⼈的⼩⽹站,⼀系列原因选择了⽤php来写,最⼤的问题就是虽然php很流⾏,但我从来没有接触过php,看了⼀个多星期的基本语法后做些⼩练习热热⾝,但是期间是各种问题啊,主要是对php不熟悉,遇到⼀些总结⼀些吧。
数据<?xml version="1.0"?><books><book name="JavaScript: The Defiitive Guide" publisher="O'Reilly Media, Inc."><author>David Flanagan</author></book><book name="PHP anf MySQL Web Development" publisher="Perason Education"><author>Luke Welling</author><author>Laura Thomson</author></book><book name="HTTP: The Defiitive Guide" publisher="O'Reilly Media, Inc."><author>David Courley</author><author>Brian Totty</author></book></books>XML⼏个基本概念节点:节点也就是很多程序语⾔中处理XML时的Node,节点是⼀个⽐较宽泛的概念,在XML中元素,属性,名字空间,注释,⽂本内容,处理指令,还有整个⽂档都属于节点,也就是说XML⽂档中每个独⽴的⼀⼩部分都是节点,是,也是,name=”XXXX”也是,标签是,甚⾄作者的名字David Flanagan都是⼀个⽂本节点。
修改名词:PHP 发送及处理XML格式请求
修改名词:PHP 发送及处理XML格式请求简介在PHP开发中,XML格式请求的发送和处理是一种常见的操作。
本文档将介绍如何在PHP中发送XML格式请求以及处理返回的XML数据。
发送XML格式请求要发送XML格式请求,首先需要创建一个XML字符串,包含所需的请求数据。
然后,使用PHP的内置函数`curl_init()`创建一个cURL会话,设置请求的URL和其他选项。
之后,调用`curl_setopt()`函数将请求类型设置为`POST`,并将XML数据设置为请求体。
最后,执行请求并获取返回的响应数据。
以下是发送XML格式请求的示例代码:<?php$xml = '<request><data>...</data></request>';$ch = curl_init();curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);$response = curl_exec($ch);curl_close($ch);echo $response;>处理XML格式请求的返回数据当收到XML格式请求的返回数据时,可以使用PHP的内置函数`simplexml_load_string()`解析XML数据。
这个函数将返回一个能够轻松访问和操作XML元素的对象。
以下是处理XML格式请求返回数据的示例代码:<?php$responseXml = '<response><status>success</status><data>...</data></response>';$xml = simplexml_load_string($responseXml);$status = $xml->status;$data = $xml->data;echo "Status: " . $status . "\n";echo "Data: " . $data . "\n";>总结通过使用PHP的内置函数和cURL库,我们可以方便地发送和处理XML格式请求。
php基础教程-XML
php基础教程-XML 一创建XML文件index.php:<?xml version="1.0" encoding="GB2312"?><?xml-stylesheet type=“text/css”href=“style.css”?><!-- 这是XML文档的注释 --><图书管理系统><管理员><用户名>李5</用户名><编号>0101</编号><电话>12345678</电话></管理员><管理员><用户名>王5</用户名><编号>0102</编号><电话>92345678</电话></管理员></图书管理系统>二读取XML文件index.php:<?phpclass Message_XML extends DOMDocument{ //创建一个类private $root;//构造函数public function __construct(){parent ::__construct();$this->load("message.xml");}//输出XML文件中的内容public function show_message(){$root=$this-documentElement;$xpath=new DOMXPath($this);$node_record=$this->getelementsByTagName("record");$node_record_length=$node_record->length;print"<table width='450' bgcolor='#97F7ED'><tr>";print"<td width='150' height='22' align='center'>";print"<b>用户名</b>";print"</td><td width='150' align='center'>";print"<b>密码</b>";print"</td><td width='150' align='center'>";print"<b>地址</b>";print"</td></tr>";for($i=0;$i<$node_record->length;$i++){$k=0;foreach($node_record->item($i)->childNodes as $articles){$field[$k]=iconv("UTF-8","GB2312",$articles->textContent);$k++;}print"<table width='450' bgcolor='#97F7ED'><tr>";print"<tr><td width='150' height='22' align='center'>";print"$field[0]";print"</td><td width='150' align='center'>";print"$field[1]";print"</td><td width='150' align='center'>";print"$field[2]";print"</tr></table>";}}}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>读取XML文件</title><style type="text/css"><!--body,td,th {font-size: 13px;}a:link {text-decoration: none;}a:visited {text-decoration: none;}a:hover {text-decoration: none;}a:active {text-decoration: none;}.STYLE2 {font-size: 18px}--></style></head><body><table width="450" height="50" border="0" cellpadding="0" cellspacing="0"> <tr><td height="50" align="center" bgcolor="#97F7ED"><a href=?Action=show_message class="STYLE2">读取XML文件</a></td></tr><?php$hawkXML=new Message_XML;$Action=$_GET['Action'];switch($Action){case "show_message":$hawkXML->show_message();break;}?></table><table width="450" height="50" border="0" cellpadding="0" cellspacing="0"> <tr><td align="right" bgcolor="#97F7ED"><a href="message.xml">查看XML文件内容</a> </td></tr></table></body></html>message.xml:<?xml version="1.0" encoding="GB2312"?><管理员><record><user>清风</user><pass>123456</pass><address>长春市</address></record><record><user>明日</user><pass>456789</pass><address>长春市</address></record><record><user>欧阳正</user><pass>789456</pass><address>楼蓝古国</address></record><record><user>南天门</user><pass>123123</pass><address>天宫</address></record></管理员>三添加XML文件index.php:<?php//Message_XML类,继承PHP5的DomDocument类class Message_XML extends DomDocument{//属性private $Root;//方法//构造函数public function __construct() {parent:: __construct();//创建或读取存储留言信息的XML文档message.xmlif (!file_exists("message.xml")){$xmlstr = "<?xml version='1.0' encoding='GB2312'?><message></message>";$this->loadXML($xmlstr);$this->save("message.xml");}else$this->load("message.xml");}public function add_message($user,$pass,$address){ //添加数据$Root = $this->documentElement;//获取留言消息$admin_id =date("Ynjhis");$Node_admin_id= $this->createElement("admin_id");$text= $this->createTextNode(iconv("GB2312","UTF-8",$admin_id));$Node_admin_id->appendChild($text);$Node_user = $this->createElement("user");$text = $this->createTextNode(iconv("GB2312","UTF-8",$user));$Node_user->appendChild($text);$Node_pass = $this->createElement("pass");$text= $this->createTextNode(iconv("GB2312","UTF-8",$pass));$Node_pass->appendChild($text);$Node_address = $this->createElement("address");$text= $this->createTextNode(iconv("GB2312","UTF-8",$address));$Node_address->appendChild($text);$Node_Record = $this->createElement("record");$Node_Record->appendChild($Node_admin_id);$Node_Record->appendChild($Node_user);$Node_Record->appendChild($Node_pass);$Node_Record->appendChild($Node_address);//加入到根结点下$Root->appendChild($Node_Record);$this->save("message.xml");echo "<script>alert('添加成功');location.href='".$_SERVER['PHP_SELF']."'</script>";}public function show_message(){ //读取数据$root=$this-documentElement;$xpath=new DOMXPath($this);$Node_Record=$this->getElementsByTagName("record");$Node_Record_length=$Node_Record->length;print"<table width='350' bgcolor='#97F7ED'><tr>";print"<td width='115' height='22' align='center'>";print"<b>用户名</b>";print"</td><td width='115' align='center'>";print"<b>密码</b>";print"</td><td width='120' align='center'>";print"<b>地址</b></td></tr>";for($i=0;$i<$Node_Record->length;$i++){$k=0;foreach($Node_Record->item($i)->childNodes as $articles){$field[$k]=iconv("UTF-8","GB2312",$articles->textContent);$k++;}print"<table width='350' bgcolor='#97F7ED'><tr>";print"<td width='115' height='22' align='center'>";print"$field[1]";print"</td><td width='115' align='center'>";print"$field[2]";print"</td><td width='120' align='center'>";print"$field[3]";print"</td>";print"</tr></table>";}}public function post_message(){print "<table width='350' bgcolor='#97F7ED'><form method='post' action='?Action=add_message'>";print "<tr><td width='100'height='22' align='center'>用户名:</td><td><input type=text name='user'size=30></td></tr>";print "<tr><td width='100' height='22' align='center'>密码:</td><td><input type=text name='pass'size=30></td></tr>";print "<tr><td width='100' height='22' align='center'>地址:</td><td><input type=text name='address'size=30></td></tr>";print "<tr><td width='100' height='22'align='center'><input type='submit' value='添加数据'></td><td align='right'><a href=?Action=show_message>查看数据</a> </td></tr></form></table>";}}?><html> <head> <title>添加XML数据</title><style>td,body{font-size:14 px}a:link {text-decoration: none;}a:visited {text-decoration: none;}a:hover {text-decoration: none;}a:active {text-decoration: none;}</style> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head> <body> <table width=350 height=35 border=0 cellpadding=0 cellspacing=0 bgcolor="#97F7ED"><tr> <td height=35 align="center"> <a href=?Action=post_message>添加数据</a></td></tr><?php$HawkXML = new Message_XML;$Action ="";if(isset($_GET['Action']))$Action = $_GET['Action'];switch($Action){ case "show_message": //查看$HawkXML->show_message();break;case "post_message": //提交$HawkXML->post_message();break;case "add_message": //添加$HawkXML->add_message($_POST['user'],$_POST['pass'],$_POST['address']);break; } ?></table> </body> </html> message.xml:<?xml version="1.0" encoding="GB2312"?><message><record><admin_id>2007424065018</admin_id><user>英特尔</user><pass>123456</pass><address>长春市</address></record><record><admin_id>2007424065056</admin_id><user>网易论坛</user><pass>789465</pass><address>长春市</address></record><record><admin_id>2007424065133</admin_id><user>网易软件</user><pass>456456</pass><address>长春市</address></record><record><admin_id>2007426050235</admin_id><user>mrsoft</user><pass>123456</pass><address>长春市</address></record></message>四查询XML文件index.php:<?phpclass Message_XML extends DomDocument{private $Root;public function __construct() {parent:: __construct();$this->load("message.xml");}public function select_message($Action){$Root = $this->documentElement;$xpath = new DOMXPath($this);$Node_Record = $xpath->query("//record[admin_id='$Action']");$g=0;foreach($Node_Record->item(0)->childNodes as $node){$field[$g]=iconv("UTF-8","GB2312",$node->textContent);$g++; }print "<table width='450' border=1 cellpadding=3 cellspacing=1 bgcolor='#00CCFF'>";print "<tr><td width='95'align='right'>用户名:</td><td><input type=text name='user' value='$field[1]' size=30></td></tr>";print "<tr><td width='95'align='right'>密码:</td><td><input type=text name='pass' value='$field[2]' size=30></td></tr>";print "<tr><td width='95'align='right'>地址:</td><td><input type=text name='address' value='$field[3]' size=30></td></tr>";print "</table>"; }}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>查询XML文件</title><style type="text/css"><!--body,td,th {font-size: 13px;}a:link {text-decoration: none;}a:visited {text-decoration: none;}a:hover {text-decoration: none;}a:active {text-decoration: none;}.STYLE2 {font-size: 18px}--></style></head><body><table width=450 height=35 border=1 cellpadding=3 cellspacing=1 bgcolor="#00CCFF"><form name="form1" method="get" action="index.php"><tr><td height=35 align="center">请输入用户编号<input name="Action" type="text" id="Action"><input type="submit" name="Submit" value="提交"> </td></tr></form><?php if($Submit==true){$HawkXML = new Message_XML;$HawkXML->select_message($_GET["Action"]); } ?></table></body></html>message.xml:<?xml version="1.0" encoding="GB2312"?><message><record><admin_id>2007424065018</admin_id><user>英特尔</user><pass>123456</pass><address>长春市</address></record><record><admin_id>2007424065056</admin_id><user>网易论坛</user><pass>789465</pass><address>长春市</address></record><record><admin_id>2007424065133</admin_id><user>网易软件</user><pass>456456</pass><address>长春市</address></record><record><admin_id>2007426050235</admin_id><user>mrsoft</user><pass>123456</pass><address>长春市</address></record></message>五修改XML文件index.php:<?phpclass Message_XML extends DomDocument{//属性private $Root;//方法//构造函数public function __construct() {parent:: __construct();//创建或读取存储留言信息的XML文档message.xml$this->load("message.xml");}public function show_message(){$root=$this-documentElement;$xpath=new DOMXPath($this);$Node_Record=$this->getElementsByTagName("record");$Node_Record_length=$Node_Record->length;print"<table width='450' bgcolor='#97F7ED'><tr>"; print"<td width='112' height='22' align='center'>";print"<b>用户名</b>";print"</td><td width='112' align='center'>";print"<b>密码</b>";print"</td><td width='113' align='center'>";print"<b>地址</b></td><td width='113'>";print" ";print"</td></tr>";for($i=0;$i<$Node_Record->length;$i++){$k=0;foreach($Node_Record->item($i)->childNodes as $articles){$field[$k]=iconv("UTF-8","GB2312",$articles->textContent);$k++;}print"<table width='450' bgcolor='#97F7ED'><tr>";print"<td width='112' height='22' align='center'>";print"$field[1]";print"</td><td width='112' align='center'>";print"$field[2]";print"</td><td width='113' align='center'>";print"$field[3]";print"</td><td width='113' align='center'>";print"<a href='?Action=update_message&admin_id=$field[0]'>修改</a></td>";print"</tr></table>";}}//修改数据public function update_message($admin_id){$Root = $this->documentElement;$xpath = new DOMXPath($this);$Node_Record = $xpath->query("//record[admin_id='$admin_id']");$g=0;foreach($Node_Record->item(0)->childNodes as $articles){$field[$g]=iconv("UTF-8","GB2312",$articles->textContent);$g++; }print "<table width='450' bgcolor='#97F7ED'><form method='post' action='?Action=save_message&admin_id=$admin_id'>";print "<tr><td width='95'align='right'>用户名:</td><td><input type=text name='user' value='$field[1]' size=30></td></tr>";print "<tr><td width='95'align='right'>密码:</td><td><input type=text name='pass' value='$field[2]' size=30></td></tr>";print "<tr><td width='95'align='right'>地址:</td><td><input type=text name='address' value='$field[3]' size=30></td></tr>";print "<tr><td colspan='2' align='center'><input type='submit' value='修改数据'></td></tr></form></table>";}//保存数据public function save_message($admin_id,$user,$pass,$address) {$Root = $this->documentElement;//查询待修改的记录$xpath = new DOMXPath($this);$Node_Record = $xpath->query("//record[admin_id='$admin_id']");$Replace[0]=$admin_id;$Replace[1]=$user;$Replace[2]=$pass;$Replace[3]=$address;$d=0;//修改foreach ($Node_Record->item(0)->childNodes as $articles) {$Node_newText =$this->extNode(iconv("GB2312","UTF-8",$Replace[$d]));$articles->replaceChild($Node_newText,$articles->lastChild);$d++;}echo "<script>alert('修改成功');location.href='".$_SERVER['PHP_SELF']."'</script>";$this->save("message.xml");}}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>修改XML文件</title><style type="text/css"><!--body,td,th {font-size: 13px;}a:link {text-decoration: none;}a:visited {text-decoration: none;}a:hover {text-decoration: none;}a:active {text-decoration: none;}.STYLE2 {font-size: 18px}--></style></head><body><table width="450" height="50" border="0" cellpadding="0" cellspacing="0"><tr><td height="50" align="center" bgcolor="#97F7ED"><a href=?Action=show_message class="STYLE2">修改XML文件</a></td></tr><?php$hawkXML = new Message_XML;$Action ="";if(isset($_GET['Action']))$Action = $_GET['Action'];switch($Action){case "show_message":$hawkXML->show_message();break;case "update_message"://修改$hawkXML->update_message($_GET['admin_id']);break;case "save_message"://保存$hawkXML->save_sage($_GET['admin_id'],$_POST['user'],$_POST[' pass'],$_POST['address']);break; }?></table></body></html>message.xml:<?xml version="1.0" encoding="GB2312"?><message><record><admin_id>2007424065018</admin_id><user>英特尔</user><pass>123456</pass><address>长春市</address></record><record><admin_id>2007424065056</admin_id><user>网易论坛</user><pass>789465</pass><address>长春市</address></record><record><admin_id>2007424065133</admin_id><user>网易软件</user><pass>456456</pass><address>长春市</address></record><record><admin_id>2007426050235</admin_id><user>mrsoft</user><pass>123456</pass><address>长春市</address></record></message>六删除XML文件index.php:<?phpclass Message_XML extends DomDocument{private $Root;public function __construct() {parent:: __construct();//创建或读取存储留言信息的XML文档message.xml$this->load("message.xml");}public function delete_message($admin_id){$Root = $this->documentElement;$xpath = new DOMXPath($this);$Node_Record= $xpath->query("//record[admin_id='$admin_id']");$Root->removeChild($Node_Record->item(0));$this->save("message.xml");echo "<script>alert('删除成功');location.href='".$_SERVER['PHP_SELF']."'</script>";}public function show_message() {$Root = $this->documentElement;$xpath = new DOMXPath($this);$Node_Record = $this->getElementsByTagName("record");$Node_Record_Length =$Node_Record->length;print"<table width='450' bgcolor='#97F7ED'><tr>";print"<td width='112' height='22' align='center'>";print"<b>用户名</b>";print"</td><td width='112' align='center'>";print"<b>密码</b>";print"</td><td width='113' align='center'>";print"<b>地址</b></td><td width='113'>";print" ";print"</td></tr>";for($i=0;$i<$Node_Record->length;$i++) {$K=0;foreach ($Node_Record->item($i)->childNodes as $articles) {$Field[$K]=iconv("UTF-8","GB2312",$articles->textContent);$K++;}print"<table width='450' bgcolor='#97F7ED'><tr>";print"<td width='112' height='22' align='center'>";print"$Field[1]";print"</td><td width='112' align='center'>";print"$Field[2]";print"</td><td width='113' align='center'>";print"$Field[3]";print"</td><td width='113' align='center'>";print"<a href='?Action=delete_message&admin_id=$Field[0]'>删除</a></td>";print"</tr></table>";}}}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>删除XML文件</title><style type="text/css"><!--body,td,th {font-size: 13px;}a:link {text-decoration: none;}a:visited {text-decoration: none;}a:hover {text-decoration: none;}a:active {text-decoration: none;}.STYLE2 {font-size: 18px}--></style></head><body><table width="450" height="50" border="0" cellpadding="0" cellspacing="0"><tr><td height="50" align="center" bgcolor="#97F7ED"><a href=?Action=show_message class="STYLE2">删除XML文件</a></td></tr><?php $HawkXML = new Message_XML;$Action ="";if(isset($_GET['Action']))$Action = $_GET['Action']; switch($Action){ case "show_message":$HawkXML->show_message();break;case "delete_message"://删除$HawkXML->delete_message($_GET['admin_id']);break;}?></table></body></html>message.xml:<?xml version="1.0" encoding="GB2312"?><message><record><admin_id>2007424065018</admin_id><user>英特尔</user><pass>123456</pass><address>长春市</address></record><record><admin_id>2007424065056</admin_id><user>网易论坛</user><pass>789465</pass><address>长春市</address></record><record><admin_id>2007424065133</admin_id><user>网易软件</user><pass>456456</pass><address>长春市</address></record><record><admin_id>2007426050235</admin_id><user>mrsoft</user><pass>123456</pass><address>长春市</address></record></message>七 XSL转换成XML文件index.php:<?xml version="1.0" encoding="gb2312"?><?xml-stylesheet type="text/xsl" href="xsl.xsl"?> <管理系统><管理员><用户名>长江科技</用户名><密码>123456</密码><地址>长春市</地址></管理员><管理员><用户名>闪闪亮</用户名><密码>789654</密码><地址>长春市</地址></管理员></管理系统><?xml version="1.0" encoding="gb2312"?><xsl:stylesheet xmlns:xsl="/TR/WD-xsl"><xsl:template match="/"><html><body><center><table width="450" bgcolor="#C8FFFF" height="30" border="10" cellspacing="1" cellpadding="0"><tr><td colspan="3" align="center" height="35">企业用户管理</td></tr><tr align="center"><td><b>用户名</b></td><td><b>密码</b></td><td><b>地址</b></td></tr><xsl:for-each select="管理系统/管理员"><tr align="center" height="22"><td><xsl:value-of select="用户名"/></td><td><xsl:value-of select="密码"/></td><td><xsl:value-of select="地址"/></td></tr></xsl:for-each></table></center></body></html></xsl:template></xsl:stylesheet>八 XML文件中应用CSSindex.php:<?xml version="1.0" encoding="gb2312"?><?xml-stylesheet type="text/css" href="css.css"?><css>天高任鸟飞,海阔凭鱼跃.</css>css{width:300px; height:100px}css{border-top-width:10px; border-right-width:10px;border-bottom-width:10px;border-left-width:10px;}css{border-top-color:#007300; border-right-color:#007300;border-bottom-color:#007300; border-left-color:#007300; }css{border-top-style:double; border-right-style:double; border-bottom-style:double; border-left-style:double}css{letter-spacing:2px; line-height:28px; color:red; font-size:18px; }。
PHP进行XML编程
XML(eXtensible Markup Language,可扩展标识语言),是一种标准化的数据格式。
它看起来有点类似HT ML,也有标签(<example>like this</example>)和实体(如&)。
但和HTML不一样的是,XML 设计的目的是为了便于被解析,并且在XML文档中你要遵循很多规则(哪些是你可以做的,哪些是你不能做的)。
现在,在出版、工程、医药等很多领域,XML已经成为一种标准化的数据格式。
XML可用于远程过程调用(RPC, Remote Procedure Calls)、数据库、商品订单等等。
在很多情况下你可能会用到XML。
因为它是一种数据传送的通用格式,其他程序可以通过提取信息(解析)或者用HTML显示(转换)的方式让你使用XML文件。
本章介绍如何使用PHP内置的XML解析器,也介绍了如何使用可选的XSLT扩展来转换XML。
我们还会简要介绍如何生成XML文档。
最近,XML已经被用于远程过程调用(XML-RPC)。
客户端将函数名和参数值用XML编码后通过HTTP发送至服务器,服务器收到后解码函数名和值,再决定如何处理,最后返回一个XML编码的响应值。
XML-RPC 已经被证明是一种集成用不同语言编写的应用程序组件的好方法。
在本章中,我们将会介绍如何编写XML -RPC服务器和客户端。
入门指南11.1Lightning Guide to XML XML大多数XML文档由元素(类似于HTML标签)、实体和规则数据组成。
例如:<book isbn="1-56592-610-2"><title>Programming PHP</title><authors><author>Rasmus Lerdorf</author><author>Kevin Tatroe</author><author>Peter MacIntyre</author></authors></book>在HTML中,常常可以用不封闭的标签,最常见的例子:<br>但在XML中,这样是非法的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用PHP生成和获取XML格式数据
在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
生成XML格式数据
我们假设系统中有一张学生信息表student,需要提供给第三方调用,并有id,name,sex,age分别记录学生的姓名、性别、年龄等信息。
CREATE TABLE `student` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`sex` varchar(10) NOT NULL,
`age` smallint(3) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
首先,建立createXML.php文件,先连接数据库,获取数据。
include_once ("connect.php"); //连接数据库
$sql = "select * from student";
$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_array($result)) {
$arr[] = array(
'name' => $row['name'],
'sex' => $row['sex'],
'age' => $row['age']
);
}
这个时候,数据就保存在$arr中,你可以使用print_r打印下数据测试。
接着,建立xml,循环数组,将数据写入到xml对应的节点中。
$doc = new DOMDocument('1.0', 'utf-8'); // 声明版本和编码
$doc->formatOutput = true;
$r = $doc->createElement("root");
$doc->appendChild($r);
foreach ($arr as $dat) {
$b = $doc->createElement("data");
$name = $doc->createElement("name");
$name->appendChild($doc->createTextNode($dat['name']));
$b->appendChild($name);
$sex = $doc->createElement("sex");
$sex->appendChild($doc->createTextNode($dat['sex']));
$b->appendChild($sex);
$age = $doc->createElement("age");
$age->appendChild($doc->createTextNode($dat['age']));
$b->appendChild($age);
$r->appendChild($b);
}
echo $doc->saveXML();
我们调用了PHP内置的类DOMDocument来处理与生成xml。
最终生成的xml格式
<?xml version="1.0" encoding="utf-8"?>
<root>
<data>
<name>李王皓</name>
<sex>男</sex>
<age>21</age>
</data>
...
</root>
获取XML格式数据
现在我们假设要从第三方获取学生信息,数据格式是XML,我们需要使用PHP解析XML,然后将解析后的数据显示或者写入本地数据库。
而这里关键的一步是解析XML。
PHP有很多中方法可以解析XML,其中PHP提供了内置的XMLReader类可以循序地浏览过xml档案的节点,你可以想像成游标走过整份文件的节点,并抓取需要的内容。
使用XMLReader是高效的,尤其是读取非常大的xml数据,相对其他方法,使用XMLReader 消耗内存非常少。
header("Content-type:text/html; Charset=utf-8");
$url = "/demo/importXML/createXML.php";
$reader = new XMLReader(); //实例化XMLReader
$reader->open($url); //获取xml
$i=1;
while ($reader->read()) {
if ($reader->nodeType == XMLReader::TEXT) { //判断node类型
$m = $i%3;
if($m==1)
$name = $reader->value; //读取node值
if($m==2)
$sex = $reader->value;
if($m==0){
$age = $reader->value;
$arr[] = array(
'name' => $name,
'sex' => $sex,
'age' => $age
);
}
$i++;
}
}
//print_r($arr);
为了将数据name,sex和age分开,我们使用$i%3来判断取模,因为在获取的xml中,节点data下的信息是以3个子节点存在的。