PHP-Fusion
v.7.01
AP-Fusion
v7.02.05
Pimped-Fusion-AP
v0.09.03
May 23 2018 15:27:02
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

lom
06/04/2018 14:03
Мы рады, ждем девятку. Очень хочется пощупать

Alipapa
27/03/2018 22:16
Всем привет, все неисправности устранили, всё у нас работает

mukaton
30/10/2015 02:37
Не получается ничего скачать. Ошибка Not Found

Alipapa
06/10/2015 23:00
9-я версия php-fusion на подходе, следите за новостями

Alipapa
10/11/2014 11:24
Заметь, я дважды ответил через 3 минуты после вопроса, могли бы уже решить

Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
Php-Fusion v9. Первые впеча...
Вопросы по работе
68 2 Alipapa
23-04-2018 13:47
Появился хэлп по PHP-Fusion...
Вопросы по работе
2139 5 lom
06-04-2018 14:04
prestashop&ap-fusion
Вопросы по работе
9546 61 Alipapa
26-08-2014 10:29
Плагин магазина Ap-Shop
Моды, плагины
5877 70 Alipapa
18-08-2014 18:14
TinyMCE
Вопросы по работе
13430 55 Alipapa
27-07-2013 21:57
HTML-5
Моды, плагины
1818 1 Alipapa
15-06-2013 19:47
Мультиязычность в Pimped-Fu...
Ошибки, баги, глюки
2668 4 Papich
16-04-2013 12:39
Pimped-Fusion. Первые впеча...
Ошибки, баги, глюки
12455 127 Alipapa
18-12-2012 10:59
Ищу мод для расстановки код...
Моды, плагины
8188 55 Alipapa
17-09-2012 14:00
Как присоединить файл к лич...
Моды, плагины
4940 3 lom
27-05-2012 18:12
Что мне не нравится в после...
Вопросы по работе
3203 4 Alipapa
27-05-2012 18:08
Проблемы с добавлением кате...
Вопросы по работе
3951 5 Alipapa
27-05-2012 18:06

xml_parse_into_struct

(PHP 3>= 3.0.8, PHP 4 , PHP 5)

xml_parse_into_struct -- Парсер XML данных в структуру массива

Description

int xml_parse_into_struct ( resource parser, string data, array &values [, array &index] )

Эта функция разбирает XML-файл на две параллельные структуры: одна из которых (index) содержит указатели на местонахождение соответствующих значений в массиве values array. Последние два параметра обязаны передаваться по ссылке.

Пример иллюстрирует внутреннюю структуру сгенерированных массивов. Мы используем простой тэг note, встроенный в тэг para, а затем разбираем это и выводим сгенерированные структуры:

Пример 1. xml_parse_into_struct() example

<?php
$simple
= "<para><note>simple note</note></para>" ;
$p = xml_parser_create ();
xml_parse_into_struct ( $p , $simple , $vals , $index );
xml_parser_free ( $p );
echo
"Index array\n" ;
print_r ( $index );
echo
"\nVals array\n" ;
print_r ( $vals );
?>

Когда исполнится этот код, на выходе будет:

Index array
Array
(
    [PARA] => Array
   (
       [0] => 0
       [1] => 2
   )

    [NOTE] => Array
   (
       [0] => 1
   )

)

Vals array
Array
(
    [0] => Array
   (
       [tag] => PARA
       [type] => open
       [level] => 1
   )

    [1] => Array
   (
       [tag] => NOTE
       [type] => complete
       [level] => 2
       [value] => simple note
   )

    [2] => Array
   (
       [tag] => PARA
       [type] => close
       [level] => 1
   )

)

Разбор на основе событий (на основе библиотеки expat) может усложниться, если у нас сложный XML-документ. Эта функция не производит объект в стиле DOM, а генерирует структуры типа дерева. Таким образом, мы можем легко создавать объекты, представляющие данные в XML-файле. Рассмотрим следующий XML-файл, представляющий собой небольшую БД с информацией об аминокислотах:

Пример 2. moldb.xml - small database of molecular information

<?xml version="1.0"?>
<moldb>

    <molecule>
   <name>Alanine</name>
   <symbol>ala</symbol>
   <code>A</code>
   <type>hydrophobic</type>
    </molecule>

    <molecule>
   <name>Lysine</name>
   <symbol>lys</symbol>
   <code>K</code>
   <type>charged</type>
    </molecule>

</moldb>
And some code to parse the document and generate the appropriate objects:

Пример 3. parsemoldb.php - parses moldb.xml into an array of molecular objects

<?php

class AminoAcid {
    var
$name ;   // aa name
    
var $symbol ;     // three letter symbol
    
var $code ;   // one letter code
    
var $type ;   // hydrophobic, charged or neutral
    
    
function AminoAcid ( $aa )
    {
        foreach (
$aa as $k => $v )
            
$this -> $k = $aa [ $k ];
    }
}

function
readDatabase ( $filename )
{
    
// read the XML database of aminoacids
    
$data = implode ( "" , file ( $filename ));
    
$parser = xml_parser_create ();
    
xml_parser_set_option ( $parser , XML_OPTION_CASE_FOLDING , 0 );
    
xml_parser_set_option ( $parser , XML_OPTION_SKIP_WHITE , 1 );
    
xml_parse_into_struct ( $parser , $data , $values , $tags );
    
xml_parser_free ( $parser );

    
// loop through the structures
    
foreach ( $tags as $key => $val ) {
        if (
$key == "molecule" ) {
            
$molranges = $val ;
            
// each contiguous pair of array entries are the
            // lower and upper range for each molecule definition
            
for ( $i = 0 ; $i < count ( $molranges ); $i += 2 ) {
                    
$offset = $molranges [ $i ] + 1 ;
                
$len = $molranges [ $i + 1 ] - $offset ;
                
$tdb [] = parseMol ( array_slice ( $values , $offset , $len ));
            }
        } else {
            continue;
        }
    }
    return
$tdb ;
}

function
parseMol ( $mvalues )
{
    for (
$i = 0 ; $i < count ( $mvalues ); $i ++) {
        
$mol [ $mvalues [ $i ][ "tag" ]] = $mvalues [ $i ][ "value" ];
    }
    return new
AminoAcid ( $mol );
}

$db = readDatabase ( "moldb.xml" );
echo
"** Database of AminoAcid objects:\n" ;
print_r ( $db );

?>

После выполнения parsemoldb.php переменная $db содержит массив AminoAcid-объектов, и вывод скрипта подтверждает это:

** Database of AminoAcid objects:
Array
(
    [0] => aminoacid Object
   (
       [name] => Alanine
       [symbol] => ala
       [code] => A
       [type] => hydrophobic
   )

    [1] => aminoacid Object
   (
       [name] => Lysine
       [symbol] => lys
       [code] => K
       [type] => charged
   )

)

Все функции PHP:
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Техника
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 453
· Новый пользователь: ZDA
Информеры
Загрузка файлов  +  -
7,666,251 уникальных посетителей Iceberg by Harly