Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342892
  • 博文数量: 97
  • 博客积分: 2130
  • 博客等级: 大尉
  • 技术积分: 1800
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 11:51
文章分类
文章存档

2013年(57)

2012年(40)

我的朋友

分类: PHP

2013-01-24 09:21:01



清单 6. DOM 构建脚本的输出

 

  % php e4.php 

  ?xml version="1.0"?

  books

  book

  authorJack Herrington/author

  titlePHP Hacks/title

  publisherO'Reilly/publisher

  /book

  book

  authorJack Herrington/author

  titlePodcasting Hacks/title

  publisherO'Reilly/publisher

  /book

  /books

  %


  使用 DOM 的真正价值在于它创建的 XML 总是格式正确的。但是如果不能用 DOM 创建 XML 时该怎么办?

   PHP 编写 XML

  如果 DOM 不可用,可以用 PHP 的文本模板编写 XML。清单 7 显示了 PHP 如何构建图书 XML 文件。

清单 7. PHP 编写图书 XML

 

  ?php

  $books = array();

  $books [] = array(

  'title' = 'PHP Hacks',

  'author' = 'Jack Herrington',

  'publisher' = "O'Reilly"

  );

  $books [] = array(

  'title' = 'Podcasting Hacks',

  'author' = 'Jack Herrington',

  'publisher' = "O'Reilly"

  );

  ?

  books

  ?php

  

  foreach( $books as $book )

  {

  ?

  book

  title><?php echo( $book['title'] ); ?></title

  author><?php echo( $book['author'] ); ?

  /author

  publisher><?php echo( $book['publisher'] ); ?

  /publisher

  /book

  ?php

  }

  ?

  /books


  脚本的顶部与 DOM 脚本类似。脚本的底部打开 books 标记,然后在每个图书中迭代,创建 book 标记和所有的内部 titleauthor publisher 标记。

  这种方法的问题是对实体进行编码。为了确保实体编码正确,必须在每个项目上调用 htmlentities 函数,如清单 8 所示。

清单 8. 使用 htmlentities 函数对实体编码

 

  books

  ?php

  

  foreach( $books as $book )

  {

  $title = htmlentities( $book['title'], ENT_QUOTES );

  $author = htmlentities( $book['author'], ENT_QUOTES );

  $publisher = htmlentities( $book['publisher'], ENT_QUOTES );

  ?

  book

  title><?php echo( $title ); ?></title

  author><?php echo( $author ); ?> </author

  publisher><?php echo( $publisher ); ?

  /publisher

  /book

  ?php

  }

  ?

  /books


  这就是用基本的 PHP 编写 XML 的烦人之处。您以为自己创建了完美的 XML,但是在试图使用数据的时候,马上就会发现某些元素的编码不正确。

  结束语

  XML 周围总有许多夸大之处和混淆之处。但是,并不像您想像的那么难 —— 特别是在 PHP 这样优秀的语言中。在理解并正确地实现了 XML 之后,就会发现有许多强大的工具可以使用。XPath XSLT 就是这样两个值得研究的工具。参考

阅读(1097) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~