zoukankan      html  css  js  c++  java
  • 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 . "
    "; 
    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://root@localhost/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>
    ";
     8 echo "<ul>
    ";
     9 
    10 foreach ($rss->getItems() as $item) {
    11     echo "<li><a href="" . $item['link'] . "">" . $item['title'] . "</a></li>
    ";
    12 }
    13 
    14 echo "</ul>
    ";
    15 ?>

    8.XML_Serializer

    XML生成器

     1 <?php
     2 require_once 'XML/Serializer.php';
     3 
     4 $options = array(
     5     "indent"    => "    ",
     6     "linebreak" => "
    ",
     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:password@localhost/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 />";



  • 相关阅读:
    HDU 1686 Oulipo(kmp)
    openstack介绍以及流程
    openstack组件介绍
    linux之sort
    linux-ls命令
    CSRF-跨域访问保护
    WEB聊天
    python之路-Django进阶
    python之路-Django
    python之路-jQuery
  • 原文地址:https://www.cnblogs.com/hornedreaper1988/p/4275811.html
Copyright © 2011-2022 走看看