Тема: xml 2 db
Показать сообщение отдельно
Старый 09.09.2005, 17:35
Artem Brigert вне форума Посмотреть профиль Найти все сообщения от Artem Brigert
  № 5  
Ответить с цитированием
Artem Brigert
Banned

Регистрация: Sep 2001
Сообщений: 6,162
naverno <a no


PHP код:
    $allow "<id><storyid><pubdate><enddate><language><company><branch><wkn><isin><fair><category><related><title><teaser><author><text><media>";
//    echo $data;
//    $data = htmlspecialchars($data, ENT_QUOTES);
    
$data htmlentitydecode($data); 
ne pomogaet



wot scipt
PHP код:
<pre>
<?php

/* Usage
 Grab some XML data, either from a file, URL, etc. however you want. Assume storage in $strYourXML;

 $objXML = new xml2Array();
 $arrOutput = $objXML->parse($strYourXML);
 print_r($arrOutput); //print it out, or do whatever!
 
*/
class xml2Array {
  
   var 
$arrOutput = array();
   var 
$resParser;
   var 
$strXmlData="n1840411966.txt";
  
   function 
parse($strInputXML) {
  
           
$this->resParser xml_parser_create ();
           
xml_set_object($this->resParser,$this);
           
xml_set_element_handler($this->resParser"tagOpen""tagClosed");
          
           
xml_set_character_data_handler($this->resParser"tagData");
      
           
$this->strXmlData xml_parse($this->resParser,$strInputXML );
           if(!
$this->strXmlData) {
               die(
sprintf("XML error: %s at line %d",
           
xml_error_string(xml_get_error_code($this->resParser)),
           
xml_get_current_line_number($this->resParser)));
           }
                          
           
xml_parser_free($this->resParser);
          
           return 
$this->arrOutput;
   }
   function 
tagOpen($parser$name$attrs) {
       
$tag=array("name"=>$name,"attrs"=>$attrs);
       
array_push($this->arrOutput,$tag);
   }
  
   function 
tagData($parser$tagData) {
       if(
trim($tagData)) {
           if(isset(
$this->arrOutput[count($this->arrOutput)-1]['tagData'])) {
               
$this->arrOutput[count($this->arrOutput)-1]['tagData'] .= $tagData;
           }
           else {
               
$this->arrOutput[count($this->arrOutput)-1]['tagData'] = $tagData;
           }
       }
   }
  
   function 
tagClosed($parser$name) {
       
$this->arrOutput[count($this->arrOutput)-2]['children'][] = $this->arrOutput[count($this->arrOutput)-1];
       
array_pop($this->arrOutput);
   }
}
$filename="n1840411966.txt";
$strInputXML implode(""file($filename));
$x= new xml2Array;
$x->parse($strInputXML);

print_r($x);
?>
</pre>