За последние 24 часа нас посетили 19063 программиста и 1623 робота. Сейчас ищут 763 программиста ...

Отображение XML документа

Тема в разделе "PHP для новичков", создана пользователем setare, 16 май 2008.

  1. setare

    setare Активный пользователь

    С нами с:
    6 май 2008
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте,

    Я написала разбор XML документа и хочу его вывести на экран. Имя файла у меня задается через html форму, а потом вызывается с помощью функций Simple XML. К сожалению, при запуске, мне выдается очень много ошибок. XML документ сохранен в кодировке Ansi. В чем может быть проблема?
    Код (Text):
    1.  
    2. <html>
    3. <body>
    4. <form action=Otobrajeniye.php method=POST>
    5. <input type=text name="filename" value='<?php echo $_POST ['filename'];?>' SIZE=50><BR>
    6. <input type=submit name="send" value="Input">
    7. </form></html>
    8. </body>
    9. <?
    10. //$id=$frs;
    11. if (!empty($_POST['send']))
    12. {
    13. $file=$_POST['filename'];
    14. //echo"Вы выбрали данные под номером <b>".$frs."</b><br>";
    15. //echo"Привет = ".$id;
    16.    $dirpath='D:\\';
    17.    $frpath=join('',array($dirpath,$file));
    18.    $res = simplexml_load_file($frpath);//загружаем XML файл
    19.        echo "<h1>";
    20.       echo $res->FRAGMENT->TITLE;
    21.        echo "</h1>";
    22.       foreach ($res->children() as $child)
    23.        {
    24.          echo "<p>";
    25.          if ( $child->getName()=="PICTURE")
    26.            {
    27.              foreach($child->attributes() as $attr)
    28.              {
    29.                   if ($attr->getName()=="SRC")
    30.                   {
    31.                     $pic=iconv("UTF-8","Windows-1251",$attr);
    32.                     $picpath=join('',array($dirpath,$pic));
    33.                     echo "<p><img src=$picpath></p>";
    34.                   }
    35.              }
    36.            }
    37.          echo iconv("UTF-8","Windows-1251",$child);
    38.          echo "</p>";
    39.        }
    40. }
    Ошибки следующие:
    Код (Text):
    1.  
    2. Warning: simplexml_load_file() [function.simplexml-load-file]: file:///D%3A/fr1.xml:3: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xC2 0xE2 0xE5 0xE4 in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    3.  
    4. Warning: simplexml_load_file() [function.simplexml-load-file]: <TITLE>Введение в Компьютерные Технологии</TITLE> in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    5.  
    6. Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    7.  
    8. Warning: simplexml_load_file() [function.simplexml-load-file]: file:///D%3A/fr1.xml:4: parser error : error parsing attribute name in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    9.  
    10. Warning: simplexml_load_file() [function.simplexml-load-file]: <PICTURE SRC="1.jpg" ALT="Компьютер" LONGDESK="Изображение компьютера" /PICTURE> in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    11.  
    12. Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    13.  
    14. Warning: simplexml_load_file() [function.simplexml-load-file]: file:///D%3A/fr1.xml:4: parser error : attributes construct error in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    15.  
    16. Warning: simplexml_load_file() [function.simplexml-load-file]: <PICTURE SRC="1.jpg" ALT="Компьютер" LONGDESK="Изображение компьютера" /PICTURE> in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    17.  
    18. Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    19.  
    20. Warning: simplexml_load_file() [function.simplexml-load-file]: file:///D%3A/fr1.xml:4: parser error : Couldn't find end of Start Tag PICTURE line 4 in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    21.  
    22. Warning: simplexml_load_file() [function.simplexml-load-file]: <PICTURE SRC="1.jpg" ALT="Компьютер" LONGDESK="Изображение компьютера" /PICTURE> in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    23.  
    24. Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in T:\home\localhost\UIR-php\Otobrajeniye.php on line 16
    25.  
    26. Notice: Trying to get property of non-object in T:\home\localhost\UIR-php\Otobrajeniye.php on line 18
    27.  
    28. Notice: Trying to get property of non-object in T:\home\localhost\UIR-php\Otobrajeniye.php on line 18
    29.  
    30. Fatal error: Call to a member function children() on a non-object in T:\home\localhost\UIR-php\Otobrajeniye.php on line 20
     
  2. joost

    joost Guest

    вроде библиотека и надо ее устанавливать
     
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    SimpleXML встроена в PHP.

    Сохраните файл в UTF-8 кодировке.
     
  4. setare

    setare Активный пользователь

    С нами с:
    6 май 2008
    Сообщения:
    7
    Симпатии:
    0
    К сожалению, это не изменило ситуацию. Первая строчка ошибки может и ушла, а вот все остальные остались.
     
  5. Anonymous

    Anonymous Guest

    Потому что файл не является валидным, это даже по ошибкам видно. Это не валидный XML
     
  6. setare

    setare Активный пользователь

    С нами с:
    6 май 2008
    Сообщения:
    7
    Симпатии:
    0
    Мой xml документ выглядит следующим образом.
    Код (Text):
    1.  
    2. <?xml version="1.0" encoding="UTF-8"?>
    3. <FRAGMENT ID="1">
    4. <TITLE>Введение в Компьютерные Технологии</TITLE>
    5. <PICTURE SRC="1.jpg" ALT="Компьютер" LONGDESK="Изображение компьютера" />
    6. <TEXT>Компьютерные технологии проникают повсеместно. В наше время компьютеры явно или неявно используются во всех сферах деятельности, и потому знание основных принципов использования и взаимодействия с компьютерами является очень важным для каждого человека.</TEXT>
    7. </FRAGMENT>.
    У меня уже все работает, кроме отображения картинки. Хотя картинка находится в той же директории
     
  7. Anonymous

    Anonymous Guest

    Неправда.
     
  8. Taris

    Taris Активный пользователь

    С нами с:
    13 май 2008
    Сообщения:
    29
    Симпатии:
    0
    Хорошим тоном считается писать путь до файлов так:
    PHP:
    1.  
    2. dirname(__FILE__)."/".$imageName;
    3.  
    Вместо:
    PHP:
    1. $picpath=join('',array($dirpath,$pic))
     
  9. setare

    setare Активный пользователь

    С нами с:
    6 май 2008
    Сообщения:
    7
    Симпатии:
    0
    Я как раз исправила на />, и стало все выводить, только без картинки.
     
  10. Taris

    Taris Активный пользователь

    С нами с:
    13 май 2008
    Сообщения:
    29
    Симпатии:
    0
    Ваш скрипт согласно дампу находится в:
    PHP:
    1. T:\home\localhost\UIR-php\Otobrajeniye.php
    А в переменной пути до картинки почему-то указано:
    PHP:
    1. $dirpath='D:\\';
    Решение:

    PHP:
    1.  
    2. $picpath = dirname(__FILE__)."/".$pic;
    3.  
    [/quote]
     
  11. setare

    setare Активный пользователь

    С нами с:
    6 май 2008
    Сообщения:
    7
    Симпатии:
    0
    Здесь $dirpath это переменная пути до файла xml. А не до картинки. А картинка находится там же.Просто мне нужно знать, где xml файл лежит, чтобы его отобразить. Но хотя картинка лежит там же, она не отображается вместе с файлом. Извините, что я не уточнила, к чему имеено путь задан.
    Код (Text):
    1.  
    2. $file=$_POST['filename'];
    3. //echo"Вы выбрали данные под номером <b>".$frs."</b><br>";
    4. //echo"Привет = ".$id;
    5.    $dirpath='C:\Program Files\TopServer 2.1\home\localhost\UIR-php\\';
    6.     $frpath=dirname(__FILE__)."/".$file;
    7.   //$pic="1.jpg";
    8.   //$picpath = dirname(__FILE__)."/".$pic;
    9.    $res = simplexml_load_file($frpath);//загружаем XML файл
    Просто, если писать
    то где еще вызывать этот путь? если вызывать вместе с $frpath, выдается ошибка. Просто мне не нужно, чтобы пользователь еще задавал имя картинки, при задавании названия xml файла, нужно чтобы сразу отобразилось вместе с картинкой. Просто ведь пользователь не знает, какая там картинка.