pear中几个实用的xml代码库

1.XML_Beautifier

用于将一段排版凌乱的XML文档美化

 1 <?php
 2 require_once "XML/Beautifier.php";
 3 $fmt = new XML_Beautifier();
 4 $result = $fmt->formatFile(‘originalFile.xml‘, ‘beautifiedFile.xml‘);
 5 if (PEAR::isError($result)) {
 6     echo $result->getMessage();
 7     exit();
 8  }
 9 echo "File beautified, awaiting orders!<br />";
10  ?>

2.XML_DTD

引用外部的dtd文件以对xml内容进行验证

1 <?php
2 require_once ‘XML/DTD/XmlValidator.php‘;
3 $dtd_file = realpath(‘myfile.dtd‘);
4 $xml_file = realpath(‘myfile.xml‘);
5 $validator = new XML_DTD_XmlValidator();
6 if (!$validator->isValid($dtd_file, $xml_file)) {
7     die($validator->getMessage());
8 }
9  ?>

3.XML_Feed_Parser

解析各种主流格式的Feed(xml,atom,rss1,rss2等格式)

 1 <?php
 2 /* The file you wish to parse */
 3 $source = ‘my_source.xml‘;
 4  /* Where Relax NG is available, we can force validation of the feed */
 5 $validate = true;
 6  /* Whether or not to suppress non-fatal warnings */
 7 $suppress_warnings = false;
 8 /* If the feed is not valid XML and the tidy extension is installed we can * attempt to use it to fix the feed */
 9 $use_tidy = true;
10 $feed = new XML_Feed_Parser($source, $validate, $suppress_warnings, $use_tidy);
11 foreach ($feed as $entry) {
12     print $entry->title . "\n";
13 }
14 $first_entry = $feed->getEntryByOffset(0);
15 $particular_entry = $feed->getEntryById(‘http://jystewart.net/entry/1‘);
16  ?>

4.XML_Parser

SAX模型的 XML 解析器,相对于DOM解析器在解析时需要将这个xml树加载到内存中,SAX在某些应用中表现的更加轻量级。

 1 <?php
 2 require_once ‘XML/Parser.php‘;
 3 class myParser extends XML_Parser {
 4     function myParser() {
 5         parent::XML_Parser();
 6     }
 7      /** * 处理起始标签 * * @access private * @param resource xml parser 句柄 *    @param string 标签名 * @param array 属性值 */
 8     function startHandler($xp, $name, $attribs) {
 9         printf(‘handle start tag: %s<br />‘, $name);
10     }
11      /** * 处理结束标签 * * @access private * @param resource xml parser 句柄 * @param string 标签名 */
12     function endHandler($xp, $name) {
13         printf(‘handle end tag: %s<br />‘, $name);
14     }
15     /** * 处理字符数据 * * @access private * @param resource xml parser 句柄 * @param string 字符数据 */
16     function cdataHandler($xp, $cdata) {
17     // does nothing here, but might e.g. print $cdata
18     }
19 }
20
21 $p = &new myParser();
22 $result = $p->setInputFile(‘xml_parser_file.xml‘);
23 $result = $p->parse();
24 ?>

5.XML_Query2XML

实用query语句直接从数据库中调取数据并转换成XML(支持PDO, PEAR MDB2, PEAR DB, ADOdb)

 1 <?php
 2   require_once ‘XML/Query2XML.php‘;
 3   $pdo = new PDO(‘mysql://[email protected]/Query2XML_Tests‘);
 4   $query2xml = XML_Query2XML::factory($pdo);
 5   $artistid = $_REQUEST[‘artistid‘];
 6   $dom = $query2xml->getXML(
 7     array(
 8       ‘data‘ => array(
 9         ":$artistid"
10       ),
11       ‘query‘ => ‘SELECT * FROM artist WHERE artistid = ?‘
12     ),
13     array(
14       ‘rootTag‘ => ‘favorite_artist‘,
15       ‘idColumn‘ => ‘artistid‘,
16       ‘rowTag‘ => ‘artist‘,
17       ‘elements‘ => array(
18         ‘name‘,
19         ‘birth_year‘,
20         ‘music_genre‘ => ‘genre‘
21       )
22     )
23   );
24   header(‘Content-Type: application/xml‘);
25   $dom->formatOutput = true;
26   print $dom->saveXML();
27 ?>

6.XML_RDDL

读取资源目录描述语言(Resource Directory Description Language,RDDL)

 1 <?php
 2 require_once "XML/RDDL.php";
 3
 4 // create new RDDL parser
 5 $rddl   = &new XML_RDDL();
 6
 7 // parse a document that contains RDDL resources
 8 $result = $rddl->parseRDDL(‘http://www.rddl.org‘);
 9 // check for error
10 if (PEAR::isError($result)) {
11   echo    sprintf( "ERROR: %s (code %d)", $result->getMessage(), $result->getCode());
12   exit;
13 }
14
15 // get all resources
16 $resources = $rddl->getAllResources();
17 echo    "<pre>";
18 print_r($resources);
19 echo    "</pre>";
20
21 //    get one resource by its Id
22 $test = $rddl->getResourceById(‘CSS‘);
23 echo    "<pre>";
24 print_r($test);
25 echo    "</pre>";
26
27 // get all stylesheets
28 $test = $rddl->getResourcesByNature(‘http://www.w3.org/1999/XSL/Transform‘);
29 echo    "<pre>";
30 print_r($test);
31 echo    "</pre>";
32
33 // get all normative references
34 $test = $rddl->getResourcesByPurpose(‘http://www.rddl.org/purposes#normative-reference‘);
35 echo    "<pre>";
36 print_r($test);
37 echo    "</pre>";
38 ?>

7.XML_RSS

RSS解析器

 1 <?php
 2 require_once "XML/RSS.php";
 3
 4 $rss =& new XML_RSS("http://rss.slashdot.org/Slashdot/slashdot");
 5 $rss->parse();
 6
 7 echo "<h1>Headlines from <a href=\"http://slashdot.org\">Slashdot</a></h1>\n";
 8 echo "<ul>\n";
 9
10 foreach ($rss->getItems() as $item) {
11     echo "<li><a href=\"" . $item[‘link‘] . "\">" . $item[‘title‘] . "</a></li>\n";
12 }
13
14 echo "</ul>\n";
15 ?>

8.XML_Serializer

XML生成器

 1 <?php
 2 require_once ‘XML/Serializer.php‘;
 3
 4 $options = array(
 5     "indent"    => "    ",
 6     "linebreak" => "\n",
 7     "typeHints" => false,
 8     "addDecl"   => true,
 9     "encoding"  => "UTF-8",
10     "rootName"   => "rdf:RDF",
11     "defaultTagName" => "item"
12 );
13
14 $stories[] = array(
15     ‘title‘       => ‘First Article‘,
16     ‘link‘        => ‘http://freedomink.org/node/view/55‘,
17     ‘description‘ => ‘Short blurb about article........‘
18 );
19
20 $stories[] = array(
21     ‘title‘       => ‘Second Article‘,
22     ‘link‘        => ‘http://freedomink.org/node/view/11‘,
23     ‘description‘ => ‘This article shows you how ......‘
24 );
25
26 $data[‘channel‘] = array(
27     "title" => "Freedom Ink",
28     "link"  => "http://freedomink.org/",
29     $stories
30 );
31
32 $serializer = new XML_Serializer($options);
33
34 if ($serializer->serialize($data)) {
35     header(‘Content-type: text/xml‘);
36     echo $serializer->getSerializedData();
37 }
38 ?>

9.XML_sql2xml

通过sql语句直接从数据库中调取数据转化成xml

1 <?php
2   require_once "XML/sql2xml.php";
3   $sql2xmlclass = new xml_sql2xml("mysql://username:[email protected]/xmltest");
4   $xmlstring = $sql2xmlclass->getxml("select * from bands");
5 ?>

10.XML_Statistics

XML数据统计,标签个数,结构深度等,相当好用

 1 <?php
 2 require_once "XML/Statistics.php";
 3 $stat = new XML_Statistics(array("ignoreWhitespace" => true));
 4 $result = $stat->analyzeFile("example.xml");
 5
 6 if ($stat->isError($result)) {
 7     die("Error: " . $result->getMessage());
 8 }
 9
10 // total amount of tags:
11 echo "Total tags: " . $stat->countTag() . "<br />";
12
13 // count amount of ‘title‘ attribute, in all tags
14 echo "Occurences of attribute title: " . $stat->countAttribute("title") . "<br />";
15
16 // count amount of ‘title‘ attribute, only in <section> tags
17 echo "Occurences of attribute title in tag section: " . $stat->countAttribute("title", "section") . "<br />";
18
19 // count total number of tags in depth 4
20 echo "Amount of Tags in depth 4: " . $stat->countTagsInDepth(4) . "<br />";
21
22 echo "Occurences of PHP Blocks: " . $stat->countPI("PHP") . "<br />";
23
24 echo "Occurences of external entity ‘bar‘: " . $stat->countExternalEntity("bar") . "<br />";
25
26 echo "Data chunks: " . $stat->countDataChunks() . "<br />";
27
28 echo "Length of all data chunks: " . $stat->getCDataLength() . "<br />";
时间: 2024-10-24 04:01:05

pear中几个实用的xml代码库的相关文章

windows 系统在vs2010 中配置libxml2,及读取xml代码例子

1.先下载libxml2 (下载地址 http://download.csdn.net/detail/luoww1/8095273),里面包括了三个文件夹分别:zlib-1.2.3.win32 和iconv-1.9.2.win32 和libxml2-2.7.6.win32 2.将下载内容中的iconv.dll 和zlib1.dll 拷贝到C盘下的Windows文件夹中 3.在项目中新建include 文件夹,解压的到的libxml2和iconv中的include文件夹中的内容拷入到该includ

在Jenkins中使用Git Plugin访问Https代码库失败的问题

最近需要在Jenkins上配置一个Job,SCM源是http://git.opendaylight.org/gerrit/p/integration.git 于是使用Jenkins的Git Plugin做这件事情. 结果报错如下: hudson.plugins.git.GitException: Failed to fetch from https://git.opendaylight.org/gerrit/p/integration.git at hudson.plugins.git.GitS

分享实用的JavaScript代码库

1 var keyCodeMap = { 2 8: 'Backspace', 3 9: 'Tab', 4 13: 'Enter', 5 16: 'Shift', 6 17: 'Ctrl', 7 18: 'Alt', 8 19: 'Pause', 9 20: 'Caps Lock', 10 27: 'Escape', 11 32: 'Space', 12 33: 'Page Up', 13 34: 'Page Down', 14 35: 'End', 15 36: 'Home', 16 37: '

9个实用的Javascript代码高亮脚本

代码高亮很有用,特别是在需要在网站或者blog中显示自己编写的代码的时候,或者给其他人查看或调试语法错误的时候.我们可以将代码高亮,以便阅读者可以十分方便的读取代码块,增加用户阅读代码的良好体验. 目前,有很多免费而且有用的代码高亮脚本.这些脚本大多是由Javascript语言编写,也有些使用其它语言(比如java.Phyton或Ruby)等写的. 下面来推荐最受欢迎.最实用的9个Javascript代码高亮脚本. 1. SyntaxHighlighter 我相信这是最普遍代码高亮代码.它支持多

用 Qt 中的 QDomDocument类 处理 XML 文件(上)

我们可以看到,如果所要读取的XML文件不是很大,采用DOM读取方法还是很便捷的,由于我用的也是DOM树读取的方法,所以,本文所介绍的也主要是基于DOM的方法读取. 根据常用的操作,我简单的把对XML的操作分为以下几类: 1 首先对XML文件进行操作,打开文件. 这个其实就是对文件进行操作,可以把它直接定义为构造函数,在对对象进行初始化时完成. TopoDataReader::TopoDataReader(const wstring &filePath):_filePath(filePath),_

我的女神——简洁实用的iOS代码调试框架

我的女神--简洁实用的iOS代码调试框架 一.引言 这篇博客的起源是接手了公司的一个已经完成的项目,来做代码优化,项目工程很大,并且引入了很多公司内部的SDK,要搞清楚公司内部的这套框架,的确不是件容易的事,并且由于这个项目是多人开发的,在调试阶段会打印出巨量的调试信息,使得浏览有用信息变的十分困难,更加恐怖的是,很多信息是SDK中的调试打印,将这些都进行注销是非常费劲甚至不可能的事,于是便有了这样一些需求:首先,我需要清楚了解各个controller之间的跳转关系,需要快速的弄清每个stroy

Hibernate中的Annotation注解与XML配置的使用

通过XML配置来实现持久化: 首先我们来建立一个实体类: package com.hibernate.model; public class Student {     private int id;     private String name;     private int age;          public int getId() {         return id;     }     public void setId(int id) {         this.id 

一些实用的JQuery代码片段收集

本文将展示50个非常实用的JQuery代码片段,这些代码能够给你的JavaScript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助你又快又好地把事情完成.好好仔细看一遍,你肯定会有收获.嫩江县海洋局 如何修改jQuery默认编码(例如默认UTF-8改成改GB2312): $.ajaxSetup({ ajaxSettings:{ contentType:"application/x-www-form-urlencoded;c

使用Asp.Net中的XmlValidatingReader来验证XML Schema.

这段时间,我正在学习XML,书上介绍使用Xerces-C或Xerces-J来验证XML文档的Schema或DTD,结果,发现上面的工具不好用. 后来,只有放下书,到书店看看,有没有其他什么书能带来帮助.当检到Professiona ASP.NET XML with C# 这本书时,里面讲到了使用System.Xml 和 System.Xml.Schema命名空间下的XmlTextReader类和XmlValidatingReader类来验证带有Schema或DTD的XML文档.便买下来了. 回寝