<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=PHP%2FXML%2FXML_Content</id>
		<title>PHP/XML/XML Content - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=PHP%2FXML%2FXML_Content"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/XML/XML_Content&amp;action=history"/>
		<updated>2026-04-05T18:24:41Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=PHP/XML/XML_Content&amp;diff=1616&amp;oldid=prev</id>
		<title> в 10:37, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/XML/XML_Content&amp;diff=1616&amp;oldid=prev"/>
				<updated>2010-05-26T10:37:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:37, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=PHP/XML/XML_Content&amp;diff=1617&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=PHP/XML/XML_Content&amp;diff=1617&amp;oldid=prev"/>
				<updated>2010-05-26T07:08:25Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Manually Generating Markup==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
header ( &amp;quot;Content-Type: text/xml&amp;quot; );&lt;br /&gt;
echo &amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot; encoding=\&amp;quot;iso-8859-1\&amp;quot; ?&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;inventory&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;product id=\&amp;quot;0\&amp;quot;&amp;gt;\n&amp;quot; . &amp;quot;&amp;lt;name&amp;gt;name&amp;lt;/name&amp;gt;\n&amp;quot; .&amp;quot;&amp;lt;/product&amp;gt;\n&amp;quot;;&lt;br /&gt;
echo &amp;quot;&amp;lt;/inventory&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PRAX - PHP Record-oriented API for XML==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/*&lt;br /&gt;
PRAX - PHP Record-oriented API for XML&lt;br /&gt;
Affords a database recordset-like view of an XML document&lt;br /&gt;
in documents which lend themselves to such interpretation.&lt;br /&gt;
A port of the Perl XML::RAX module by Robert Hanson &lt;br /&gt;
(http://search.cpan.org/search?mode=module&amp;amp;query=rax)&lt;br /&gt;
based on the RAX API created by Sean McGrath &lt;br /&gt;
(http://www.xml.ru/pub/2000/04/26/rax)&lt;br /&gt;
Copyright (c) 2000 Rael Dornfest &amp;lt;rael@oreilly.ru&amp;gt;,&lt;br /&gt;
All Rights Reserved.&lt;br /&gt;
License is granted to use or modify this software (&amp;quot;PRAX&amp;quot;)&lt;br /&gt;
for commercial or non-commercial use provided the copyright &lt;br /&gt;
of the author is preserved in any distributed or derivative &lt;br /&gt;
work.&lt;br /&gt;
XML::RAX Copyright (c) 2000 Robert Hanson.  All rights&lt;br /&gt;
reserved.  This program (&amp;quot;XML::RAX&amp;quot;) is free software; you &lt;br /&gt;
can redistribute and/or modify it under the terms of the &lt;br /&gt;
Perl &amp;quot;Artistic License.&amp;quot;&lt;br /&gt;
(http://www.perl.ru/language/misc/Artistic.html)&lt;br /&gt;
For a usage synopsis, see this distribution&amp;quot;s README.txt.&lt;br /&gt;
Take a gander at sample.php (using sample.xml) for a &lt;br /&gt;
live example.&lt;br /&gt;
THIS SOFTWARE IS PROVIDED BY THE AUTHOR &amp;quot;&amp;quot;AS IS&amp;quot;&amp;quot; AND ANY EXPRESSED&lt;br /&gt;
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED&lt;br /&gt;
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE&lt;br /&gt;
DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,&lt;br /&gt;
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;br /&gt;
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR&lt;br /&gt;
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)&lt;br /&gt;
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,&lt;br /&gt;
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING&lt;br /&gt;
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE&lt;br /&gt;
POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
class RAX {&lt;br /&gt;
  function RAX () {&lt;br /&gt;
    $this-&amp;gt;record_delim = &amp;quot;&amp;quot;;&lt;br /&gt;
    $this-&amp;gt;fields = array();&lt;br /&gt;
    $this-&amp;gt;records = array();&lt;br /&gt;
    $this-&amp;gt;parser;&lt;br /&gt;
    $this-&amp;gt;in_rec = 0;&lt;br /&gt;
    $this-&amp;gt;in_field = 0;&lt;br /&gt;
    $this-&amp;gt;field_data = &amp;quot;&amp;quot;;&lt;br /&gt;
    $this-&amp;gt;tag_stack = array();&lt;br /&gt;
    $this-&amp;gt;xml = &amp;quot;&amp;quot;;&lt;br /&gt;
    $this-&amp;gt;xml_file;&lt;br /&gt;
    $this-&amp;gt;rax_opened = 0;&lt;br /&gt;
    $this-&amp;gt;debug = $GLOBALS[&amp;quot;debug&amp;quot;];&lt;br /&gt;
    $this-&amp;gt;version = &amp;quot;0.1&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function open ($xml) {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;open(\&amp;quot;$xml\&amp;quot;)&amp;quot;);&lt;br /&gt;
    if ($this-&amp;gt;rax_opened) return 0;&lt;br /&gt;
    $this-&amp;gt;xml = $xml;&lt;br /&gt;
    $this-&amp;gt;rax_opened = 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function openfile ($filename) {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;openfile(\&amp;quot;$filename\&amp;quot;)&amp;quot;);&lt;br /&gt;
    if ($this-&amp;gt;rax_opened) return 0;&lt;br /&gt;
    $fp = fopen($filename, &amp;quot;r&amp;quot;);&lt;br /&gt;
    if ($fp) {&lt;br /&gt;
      $this-&amp;gt;xml_file = $fp;&lt;br /&gt;
      $this-&amp;gt;rax_opened = 1;&lt;br /&gt;
      return 1;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startparse () {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;startparse()&amp;quot;);&lt;br /&gt;
    $this-&amp;gt;parser = xml_parser_create();&lt;br /&gt;
    xml_set_object($this-&amp;gt;parser,&amp;amp;$this);&lt;br /&gt;
    xml_set_element_handler($this-&amp;gt;parser,  &amp;quot;startElement&amp;quot;,  &amp;quot;endElement&amp;quot;);&lt;br /&gt;
    xml_set_character_data_handler($this-&amp;gt;parser,  &amp;quot;characterData&amp;quot;);&lt;br /&gt;
    xml_parser_set_option($this-&amp;gt;parser, XML_OPTION_CASE_FOLDING, 0);&lt;br /&gt;
    if (xml_parse($this-&amp;gt;parser, &amp;quot;&amp;quot;)) {&lt;br /&gt;
      $this-&amp;gt;parse_started = 1;&lt;br /&gt;
      return 1;&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function parse () {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;parse()&amp;quot;);&lt;br /&gt;
    if (!$this-&amp;gt;rax_opened) return 0;&lt;br /&gt;
    if ($this-&amp;gt;parse_done) return 0;&lt;br /&gt;
    if (!$this-&amp;gt;parse_started) &lt;br /&gt;
      if (!$this-&amp;gt;startparse()) return 0;&lt;br /&gt;
    if ($this-&amp;gt;xml_file) {&lt;br /&gt;
      $buffer = fread($this-&amp;gt;xml_file, 4096);&lt;br /&gt;
      if ( $buffer )&lt;br /&gt;
        xml_parse( $this-&amp;gt;parser, $buffer, feof($this-&amp;gt;xml_file) );&lt;br /&gt;
      else {&lt;br /&gt;
        $this-&amp;gt;parse_done = 1;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
      xml_parse($this-&amp;gt;parser, $this-&amp;gt;xml, 1);&lt;br /&gt;
      $this-&amp;gt;parse_done = 1;&lt;br /&gt;
    }&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startElement($parser, $name, $attrs) {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;startElement($name)&amp;quot;);&lt;br /&gt;
    array_push($this-&amp;gt;tag_stack, $name);&lt;br /&gt;
    if ( !$this-&amp;gt;in_rec and !strcmp($name, $this-&amp;gt;record_delim) ) {&lt;br /&gt;
      $this-&amp;gt;in_rec = 1;&lt;br /&gt;
      $this-&amp;gt;rec_lvl = sizeof($this-&amp;gt;tag_stack);&lt;br /&gt;
      $this-&amp;gt;field_lvl = $this-&amp;gt;rec_lvl + 1;&lt;br /&gt;
    }&lt;br /&gt;
    else if ( $this-&amp;gt;in_rec and sizeof($this-&amp;gt;tag_stack) == $this-&amp;gt;field_lvl ) {&lt;br /&gt;
      $this-&amp;gt;in_field = 1;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function endElement($parser, $name) {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;endElement($name)&amp;quot;);&lt;br /&gt;
    array_pop($this-&amp;gt;tag_stack);&lt;br /&gt;
    if ( $this-&amp;gt;in_rec ) {&lt;br /&gt;
      if ( sizeof($this-&amp;gt;tag_stack) &amp;lt; $this-&amp;gt;rec_lvl ) {&lt;br /&gt;
        $this-&amp;gt;in_rec = 0;&lt;br /&gt;
        array_push( $this-&amp;gt;records, new RAX_Record( $this-&amp;gt;fields ) );&lt;br /&gt;
        $this-&amp;gt;fields = array();&lt;br /&gt;
      }&lt;br /&gt;
      else if ( sizeof($this-&amp;gt;tag_stack) &amp;lt; $this-&amp;gt;field_lvl ) {&lt;br /&gt;
        $this-&amp;gt;in_field = 0;&lt;br /&gt;
        $this-&amp;gt;fields[$name] = $this-&amp;gt;field_data;&lt;br /&gt;
        $this-&amp;gt;field_data = &amp;quot;&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function characterData ($parser, $data) {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;characterData($data)&amp;quot;);&lt;br /&gt;
    if ( $this-&amp;gt;in_field ) &lt;br /&gt;
      $this-&amp;gt;field_data .= $data;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function setRecord ($delim) {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;setRecord($delim)&amp;quot;);&lt;br /&gt;
    if ($this-&amp;gt;parse_started) return 0;&lt;br /&gt;
    $this-&amp;gt;record_delim = $delim;&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function readRecord () {&lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;readRecord()&amp;quot;);&lt;br /&gt;
    while ( !sizeof($this-&amp;gt;records) and !$this-&amp;gt;parse_done ) $this-&amp;gt;parse();&lt;br /&gt;
    return array_shift($this-&amp;gt;records);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function debug ($msg) {&lt;br /&gt;
    if ($this-&amp;gt;debug) print &amp;quot;$msg&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class RAX_Record {&lt;br /&gt;
  function RAX_Record ( $fields ) {&lt;br /&gt;
    $this-&amp;gt;fields = $fields;&lt;br /&gt;
    $this-&amp;gt;debug = 0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getFieldnames () {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;getFieldnames()&amp;quot;);&lt;br /&gt;
    return array_keys( $this-&amp;gt;fields );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getField ( $field ) {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;getField($field)&amp;quot;);&lt;br /&gt;
    return trim( $this-&amp;gt;fields[$field] );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getFields () {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;getFields()&amp;quot;);&lt;br /&gt;
    return array_values( $this-&amp;gt;fields );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getRow () {&lt;br /&gt;
    &lt;br /&gt;
    $this-&amp;gt;debug(&amp;quot;getFields()&amp;quot;);&lt;br /&gt;
    return $this-&amp;gt;fields;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function debug ($msg) {&lt;br /&gt;
    if ($this-&amp;gt;debug) print &amp;quot;$msg&amp;lt;br /&amp;gt;\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>