За последние 24 часа нас посетили 62766 программистов и 1771 робот. Сейчас ищут 826 программистов ...

Проблема с XML

Тема в разделе "PHP для новичков", создана пользователем SaNtA, 6 янв 2010.

  1. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    С наступившим вас всех!
    На днях нашел галерею simpleviewer. Внешне понравилась. Ради интереса начал делать аплоадер к нему, но запнулся на моменте записи в XML фаил.
    HTML:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2.  
    3. <simpleviewergallery
    4.    
    5.     galleryStyle="MODERN"
    6.     title="SimpleViewer Gallery"
    7.     textColor="FFFFFF"
    8.     frameColor="FFFFFF"
    9.     frameWidth="20"
    10.     thumbPosition="LEFT"
    11.     thumbColumns="3"
    12.     thumbRows="4"
    13.     showOpenButton="TRUE"
    14.     showFullscreenButton="TRUE"
    15.     maxImageWidth="640"
    16.     maxImageHeight="640"
    17.     useFlickr="false"
    18.     flickrUserName=""
    19.     flickrTags=""
    20.     languageCode="AUTO"
    21.     languageList=""    
    22.     imagePath="images/"
    23.     thumbPath="thumbs/"
    24.    
    25. >
    26.  
    27. <image imageURL="images/wide.jpg" thumbURL="thumbs/wide.jpg" linkURL="" linkTarget="" >
    28.     <caption><![CDATA[Welcome to <u><a href="http://www.simpleviewer.net" target="_blank">simpleviewer</a></u>.]]></caption>   
    29. </image>
    30. <image imageURL="images/tall.jpg" thumbURL="thumbs/tall.jpg" linkURL="" linkTarget="" >
    31.     <caption>SimpleViewer is a free, customizable Flash image gallery. It allows you to display your images on any web page in a professional, intuitive and simple way.</caption> 
    32. </image>
    33. </simpleviewergallery>
    начал изучать кучу материала, о том как можно добавить запись в XML фаил. Только запутался. Как понял есть несколько методов - simplexml и XPath. Мне нужно записать все атрибуты для элемента image. Подскажите где об этом можно прочесть и посмотреть.
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Чем не устроил http://php.net/simplexml?

    • SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element
    • SimpleXMLElement::addChild — Adds a child element to the XML node
     
  3. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. include 'example.php';
    4.  
    5. $sxe = new SimpleXMLElement($xmlstr);
    6. $sxe->addAttribute('type', 'documentary');
    7.  
    8. $movie = $sxe->addChild('movie');
    9. $movie->addChild('title', 'PHP2: More Parser Stories');
    10. $movie->addChild('plot', 'This is all about the people who make it work.');
    11.  
    12. $characters = $movie->addChild('characters');
    13. $character  = $characters->addChild('character');
    14. $character->addChild('name', 'Mr. Parser');
    15. $character->addChild('actor', 'John Doe');
    16.  
    17. $rating = $movie->addChild('rating', '5');
    18. $rating->addAttribute('type', 'stars');
    19.  
    20. echo $sxe->asXML();
    21.  
    22. ?>
    Вот не могу понять откуда в примере берется переменная $xmlstr. По смыслу вместо него должен быть фаил XML?
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ну так и прочитай ее из файла.
     
  5. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    Ради эксперемента создал отдельный фаил и решил попробовать посмотреть как это точно работает, но не получилось, вылетели ошибки

    В чем причина и как можно исправить это?
     
  6. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    я же специально дал ссылку
    http://ua2.php.net/simplexml

    перечитай ее до пользовательских коментариев.
     
  7. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    Вроде получаться начало, но к сожалению не то, что хотелось бы.
    PHP:
    1. $image = simplexml_load_file("gallery.xml");
    2. $image = new SimpleXMLElement('<image/>');
    3. $image->AddAttribute('imageURL', $filedir.'/'.$newname);
    4. $image->AddAttribute('thumbURL', $thumbdir.'/'.$newname);
    5. $image->AddAttribute('linkURL', '');
    6. $image->AddAttribute('linkTarget', '');
    7. $image->AddChild('capture', '');
    8. $image->asXML("gallery.xml");
    Вот мое творение. Только вот проблема, теперь при каждой загрузке картинки он мне заново переписывает весь xml фаил. А нужно просто добавить элемент image.
     
  8. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вот ты его и перезаписал.

    Собирай <image> в отдельной переменной. И добавляй к исходному.
     
  9. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    Simpliest, а можно подробней? Просто не могу понять, как так получить чтоб элемент image добавился в simpleviewergallery.
     
  10. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Куда подробнее?
    Взять прочитать файл в объект.
    Объекту сказать, чтобы он добавил в себя ноду для этого есть специальный метод в мануале. (Ты же вместо этого затер его своей нодой).
     
  11. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    А на примере можете показать? Извиняюсь, просто новичок еще
     
  12. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Да не вопрос.


    $a = 1;
    $b = 2;
    ты можешь добавить $b к $a?
    Как это сделать?
     
  13. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    Я не понял как конкретно надо добавить.
    Этим двум переменным можно дать арифмитические какие либо действия.
    Еще думаю что может как то так сделать:
    $a = 1;
    $b = 2;
    echo $a.$b;

    в итоге получим 12...хотя может я что то и не допонял.
     
  14. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Вот. правильно

    А с xml ты делаешь так

    $a = 1;
    $a = 2;

    и хочешь каким-то образом к 1 прибавить 2.
    Понял свою ошибку? :)
     
  15. SaNtA

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

    С нами с:
    6 окт 2009
    Сообщения:
    17
    Симпатии:
    0
    Simpliest, большое спасибо за помощь! Теперь я разобрался и понял где допускал ошибки, намотаю себе на ус так сказать