您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP Cookbook读书笔记 – 第12章XML

2024/3/27 0:55:33发布19次查看
什么是xml? xml(extensible markup language)是国际标准化组织的标准通用标记语言sgml的子集。由以下规范组成: 可扩展样式语言(extensible sytle language , xsl) xml链接语言(xml linking language,包括xpath、xlink和xpointer) xml名称空间(xml n
什么是xml?xml(extensible markup language)是国际标准化组织的标准通用标记语言sgml的子集。由以下规范组成:
可扩展样式语言(extensible sytle language , xsl)xml链接语言(xml linking language,包括xpath、xlink和xpointer)xml名称空间(xml namespace)在php5之前的版本对xml的处理存在很多的问题,例如xml工具之间只具有简单的关联、每个工具不能一起协同工作等,php5中的新xml扩展具有下列特点:
能够像一个整体一样协调工作是一个标准化的xml库:libxml2完全遵循w3c规范更有效地处理数据是你工作中合适的xml工具html和xml区别与联系?html和xml都是sgml的子集,所以他们有很大的相似性。下面是xml相对于html具有的独特性:
可扩展性,用以定义需要的新标记。这对于今天的web是很有意义的结构,用于表示任意复杂程度的数据。从某种意义上说是一个小型的关系数据库校验,用以检查数据的结构正确性。通过dtd约束可以达到这一目的。媒体无关性,以多种格式发布内容。网页、手机显示的wml、其他媒体终端的显示等厂商和平台中立数据的表示与内容分离(这是与html本质区别,但现在流行的div+css设计思路与这种近似)xml的元素区分大小写任何元素都需要有结束标记xml只有一个根元素属性必须加上引号一个完整的xml长什么样子?
simpsonsfox8:00 pm30law & ordernbc8:00 pm60
形式良好的xml文档须具备下列特征:
每一个元素有一个开始和结束标记文档有且只有一个根元素,其他的所有元素都是它的子元素正确的格式化空元素标记的大小写匹配正确的嵌套属性值必须用引号实体在引用之前必须声明实体不能循环指向自身通过dom生成xml // 创建一个新的文档
$dom = new domdocument('1.0');// 创建一个根元素并将其添加到文档
$book = $dom->appendchild($dom->createelement('book'));// 创建一个title子元素,并添加到$book中$title = $book->appendchild($dom->createelement('title'));// 设置title元素的文本及cover属性$title->appendchild($dom->createtextnode('php cookbook'));$title->setattribute('cover', 'soft');// 创建并将author元素添加到$book中$sklar = $book->appendchild($dom->createelement('author'));//添加文本到author节点
$sklar->appendchild($dom->createtextnode('sklar'));$trachtenberg = $book->appendchild($dom->createelement('author'));$trachtenberg->appendchild($dom->createtextnode('trachtenberg'));// 输出完美格式化的xml文档
$dom->formatoutput = true;echo $dom->savexml();
输出内容如下:
php cookbook
用php解析已经存在的xml文件常用有三种方式来解析xml文件
对于简单文件采用simplexml对于复杂的xml文件采用dom扩展来实现对于大型xml文件采用xmlreader扩展来实现xml示例文件如下(address-book.xml):
davidsklarnew yorknysklar@php.netadamtrachtenbergsan franciscocaamt@php.net
通过simplexml方式:
$sx = simplexml_load_file('address-book.xml');foreach ($sx->person as $person) { $firstname_text_value = $person->firstname; $lastname_text_value = $person->lastname; print $firstname_text_value $lastname_text_value\n;}
通过dom扩展:
$dom = new domdocument;$dom->load('address-book.xml');foreach ($dom->getelementsbytagname('person') as $person) { $firstname = $person->getelementsbytagname('firstname'); $firstname_text_value = $firstname->item(0)->firstchild->nodevalue; $lastname = $person->getelementsbytagname('lastname'); $lastname_text_value = $lastname->item(0)->firstchild->nodevalue; print $firstname_text_value $lastname_text_value\n;}
通过xmlreader扩展:
$reader = new xmlreader();$reader->open('card-catalog.xml');while ($reader->read()) { if ($reader->nodetype == xmlreader::element && $reader->localname == 'author') { $reader->read(); print $reader->value . \n; }}
用xpath来查询信息在simplexml和dom扩展中都有xpath
//simplexml示例$emails = $s->xpath('/address-book/preson/email');//dom扩展示例$xpath = new domxpath($dom);$email = $xpath->query('/address-book/preson/email');
验证xml文档是否合法在php中,dom扩展支持基于dtd,xml schema和relaxng的验证,而simplexml则只提供了xml schema验证。
xml内容为utf-8格式如果数据来源为其他格式,需要经过编码为utf-8格式,下面是通过iconv库进行转换的示例
$utf_8 = iconv('iso-8859-1', 'utf-8', $iso_8859_1);
其他参考资料:《php高级开发技术与实例》 清华大学出版社
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product