[翻译] Joomla XML 解析器规范 上

阅读更多
概述

Joomla! 1.5 新增 JSimpleXML 类,可以更为简单的读取xml文件,但是现在还不能修改CDATA或或者属性,也不支持XPath.

JSimpleXML需要PHP 4.2以上版本,以及 Expat扩展。


2. 实现

JSimpleXML 类代码:


class JSimpleXML extends JObject
{
    /**
    * Document element
    *
    * @var object
    */
    var $document = null;
   
     /**
     * Interprets a string of XML into an object
     *
     * This function will take the well-formed xml string data and return an object of class
     * JSimpleXMLElement with properties containing the data held within the xml document.
     * If any errors occur, it returns FALSE.
     *
     * @param string  Well-formed xml string data
     * @param string  currently ignored
     * @return object JSimpleXMLElement
     */
    function loadString($string, $classname = null)
    {
  $this->_parse($string);
  return true;
    }

     /**
     * Interprets an XML file into an object
     *
     * This function will convert the well-formed XML document in the file specified by
     * filename to an object  of class JSimpleXMLElement. If any errors occur during file
     * access or interpretation, the function returns FALSE.
     *
     * @param string  Path to xml file containing a well-formed XML document
     * @param string  currently ignored
     * @return object JSimpleXMLElement
     */
    function loadFile($path, $classname = null)
    {
  //Get the XML document loaded into a variable
  $xml = file_get_contents($path);
  $this->_parse($xml);
  return true;
    }

    /**
     * Get the parser
     *
     * @access public
     * @return resource XML parser resource handle
     */
    function getParser() {
  return $this->_parser;
    }

    /**
     * Set the parser
     *
     * @access public
     * @param resource XML parser resource handle
     */
    function setParser($parser) {
  $this->_parser = $parser;
    }
}

3. 使用

正如其名,JSimpleXML使用起来非常简单。你可以参考php5的SimpleXML文档,机关本质上两者有些不同,但是使用上是基本兼容的。

来看一个xml文档的例子(example.xml)




 
 
   
     Ms. Coder
     Onlivia Actora
   
   
     Mr. Coder
     El ActÓr
   
 
 
   So, this language. It's like, a programming language. Or is it a scripting language? All 
   is revealed in this thrilling horror spoof of a documentary.
 
  7
  5



2.1 开始

首先要载入xml文档,在本例中我们要载入example.xml,JSimpleXML loadFile 方法载入相应文件的xml格式数据。loadFile其实使用 file_get_contents()方法读取文件,并把被荣传递给解析器。

//Create a JSimpleXML object
$xml = new JSimpleXML();

//Load the xml file
$xml->loadFile($file);
?>

XML解析器在解析文档时候发生错误会触发 JError,如果没有任何错误,就会继续进行。

JSimpleXML的对象结构是直接了当的,文档的根包含在内。也就是说上例中$xml->document是根。$xml->document->movie[0]是第一个movie标签$xml->document->movie是一个数组,而不是JSimpleXMLElement对象。

你可能感兴趣的:(XML,Access,PHP,数据结构)