Официальный сайт студ.городка НГТУ
Программирование и БД » XML + Php (read\write simplexml) 

#1  23.05.11 17:56

XML + Php (read\write simplexml)

Привет! Народ подскажите такой вопрос - считываю с базы данные, в том числе и в xmlформате - распарисиваю их,  по названию нод и атрибутов. и теперь вопрос как сохранить из формы по сабмиту обратно эти ноды и атрибуты??

Для парсинга и нахождения в массиве нужного ноды и атрибута пользуюсь вот таким кодом:


    function xml2array($xml) {
    if (get_class($xml) == 'SimpleXMLElement') {
        $attributes = $xml->attributes();
        if (!empty($attributes)) {
            foreach( $attributes as $k=>$v) {
                if ($v) $a[$k] = (string) $v;
            }
        }
        $x = $xml;
        $xml = get_object_vars($xml);
    }
    if (is_array($xml)) {
        if (count($xml) == 0) return (string) $x; // for CDATA
        foreach($xml as $key=>$value) {
            $r[$key] = xml2array($value);
        }
        if (isset($a)) $r['@attributes'] = $a;    // Attributes
        return $r;
    }
    return (string) $xml;
    }

   
    function find($xml, $xpath) {
    $el = new SimpleXMLElement($xml);
    $filter = $el->xpath($xpath);

    $chunks = explode('/', trim($xpath, '/'));

    $result = xml2array($filter[0]);
   
    //print_r(array_count_values ($result));
   
    if (substr($chunks[count($chunks)-1], 0, 1) == '@') {
        $key = substr($chunks[count($chunks)-1], 1);
        $result = isset($result['@attributes'][$key]) ? $result['@attributes'][$key] : NULL;
    }
    //echo "aaa:".mb_convert_encoding($result, 'cp1251', 'utf-8');
    return mb_convert_encoding($result, 'cp1251', 'utf-8');
    }

Offline

Программирование и БД » XML + Php (read\write simplexml) 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.024 сек.
Выполнено 11 запросов.