SAX / DOM Parsování

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

away
nováček
Příspěvky: 20
Registrován: březen 12
Pohlaví: Muž
Stav:
Offline

SAX / DOM Parsování

Příspěvekod away » 30 dub 2012 13:30

Ahoj,

rád bych Vás poprosil o kontrolu kódů parsování do DOM a SAX. U SAX potřebuji změnit kódování na windows 1250, když to udělám hodí to chybu ( Warning: xml_parser_set_option() [function.xml-parser-set-option]: Unsupported target encoding "cp1250" in /var/www-stud/e100105/import_sax.php on line 62
Data byla úspěšně importována) . U DOM se mi import podaří, ale vytvoří se jen prázdné místo, hodnoty se už nevypíší. Poradí mi někdo? Děkuji :)

DOM

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
 
<?php
$mysql_server = 'localhost';
$mysql_db = 'novak_projekt';
$mysql_user = 'e100105';
$mysql_password = xxxx';

$link = mysql_connect($mysql_server, $mysql_user, $mysql_password);
$databaze=MySQL_Select_DB('e100105', $link);
mysql_query("SET CHARACTER SET cp1250");

$objekt = new domDocument('1.0', 'Windows-1250');
   $objekt->load('data.xml');
   
   $telefon = $objekt->getElementsByTagName("mobil");

   foreach ($telefon as $telefon){
   
$znacka = $telefon->getAttribute('znacka');
$typ = $telefon->getAttribute('typ');
$stari = $telefon->getAttribute('stari');
$vymena = $telefon->getAttribute('vymena');
$konstrukce = $telefon->getAttribute('konstrukce');
$zkusenosti = $telefon->getAttribute('zkusenosti');

$prikaz="INSERT INTO novak_projekt (`ID`, `znacka`, `typ` , `stari` , `vymena` , `konstrukce`, `zkusenosti`) VALUES (NULL, '".$znacka."', '".$typ."', '".$stari."', '".$vymena."', '".$konstrukce."', '".$zkusenosti."')";
   
 
    $import=mysql_query($prikaz);
   }
if($import)echo "Data byla úspěšně importována";
else echo "Data se nepodařilo importovat";
  ?><br>
 <a href="index.php">Návrat na hlavní stránku</a>
  </body>
</html>



SAX

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
 
<?php
$mysql_server = 'localhost';
$mysql_db = 'novak_projekt';
$mysql_user = 'e100105';
$mysql_password = 'xxxx';

$link = mysql_connect($mysql_server, $mysql_user, $mysql_password);
$databaze=MySQL_Select_DB('e100105', $link);
mysql_query("SET CHARACTER SET cp1250");

$file = 'data.xml';
  $usercount = 0;
  $lastdata = "";
  $lasttag  = "";
  $userdata = array();
 

 
     function startElement($xml_parser, $name, $attrs){
     global $tag,$userdata,$lastdata,$lasttag;
         $tag = $name;
        if(count($attrs)>0){
   
            foreach($attrs as $a_name => $a_value){
         
              $userdata[$a_name][] =  $a_value;      
            }
          }
       }

    function endElement($xml_parser, $name){
     global $tag,$userdata,$lastdata,$lasttag;
         $usercount++; }
     
      function characterData($xml_parser, $data){
     global $userdata,$usercount,$tag,$lastdata,$lasttag;   
        if (trim($data) != '')    {
       
            if (strcmp($lasttag,$tag)==0){
              $data = $lastdata  .trim($data);
               $lastdata = $lasttag = '';
               array_pop($userdata[$tag]) ;
               $userdata[$tag][] =  $data;
            } else {
             $lastdata =  $data;
             $lasttag = $tag;
             $userdata[$tag][] =  $data;
              }       
            }                       
          }
         
    $xml_parser = xml_parser_create("UTF-8");
    xml_parser_set_option($xml_parser,XML_OPTION_TARGET_ENCODING,"UTF-8");
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser,"characterData");
   
    if(!($fp = fopen($file, "r"))){
    die ("Nelze otevřít soubor.");
    }
   
    while  ($data = fread($fp, 4096)){

  if (!xml_parse($xml_parser, $data, feof($fp))) {
    die (sprintf("Chyba: %s v řádku %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
                    }
 }
 xml_parser_free($xml_parser);


  $i = 0;
  do {

$znacka = $userdata["ZNACKA"][$i];
$typ = $userdata["TYP"][$i];
$stari = $userdata["STARI"][$i];
$vymena = $userdata["VYMENA"][$i];
$konstrukce = $userdata["KONSTRUKCE"][$i];
$zkusenosti = $userdata["ZKUSENOSTI"][$i];




 
$prikaz="INSERT INTO novak_projekt (`ID`, `znacka`, `typ` , `stari` , `vymena` , `konstrukce`, `zkusenosti`) VALUES (NULL, '".$znacka."', '".$typ."', '".$stari."', '".$vymena."', '".$konstrukce."', '".$zkusenosti."')";
 
    $import=mysql_query($prikaz) ;
 
  $i++;
 
}  while($i<=sizeof($userdata["ZNACKA"])-1);

if($import) echo "Data byla úspěšně importována";
else echo "Data se nepodařilo importovat";
  ?><br>
 <a href="index.php">Návrat na hlavní stránku</a>
 
  </body>
</html>

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: SAX / DOM Parsování

Příspěvekod CZechBoY » 30 dub 2012 16:12

nejde nějak tý funkci předat řetězec místo souboru?
že bys to třeba převedl přes iConv
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

away
nováček
Příspěvky: 20
Registrován: březen 12
Pohlaví: Muž
Stav:
Offline

Re: SAX / DOM Parsování

Příspěvekod away » 01 kvě 2012 17:41

Myslíš nějak takhle?

$znacka_hodnota = iconv("UTF-8", "Windows-1250", $znacka->item($i)->nodeValue);

Co tím vyřeším?


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů