文章从最基础的什么是xml到最终于用实例告诉你如何利用php来读,写,删除,编辑xml文档,是一篇不错的xml讲解文档,有需要的同学可以收藏本文章.
什么是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长什么样子,代码如下:
simpsons fox 8:00 pm 30 law & order nbc 8:00 pm 60
形式良好的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();//输出内容如下:
lastname; print $firstname_text_value $lastname_text_valuen; }
通过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_valuen; }
通过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; } }
在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);
文章地址:
转载随意^^请带上本文地址!