2016-04-28 3 views
0

Я хочу, чтобы основной XML созданный в PHP, и файл может быть сохранен в директории и редактироваться ...Как создать базовый файл XML в PHP

Это структура:

<?xml version="1.0" encoding="UTF-8"?> 
    <user> 
     <id> 1254</id>  
     <userName>Melanie Woods</userName> 

     <channel> 
     <host> www.natgeo.org </host> 
     <item> http://animals.natgeo.com/feed.xml </item> 
     <item> http://birds.natgeo.com/feed.xml </item> 
     </channel> 
    /////....The can add as many <'channels'> as they want.... 
    /////And as many <'items'>' in the channel as they want 
     <channel> 
     <host> www.bbc.com </host> 
     <item> http://america.bbc.com/feed.xml </item> 
     <item> http://asia.bbc.com/feed.xml </item> 
     <item> http://europe.bbc.com/feed.xml </item> 
     <item> http://australiue.bbc.com/feed.xml </item> 
     </channel> 

    </user> 

Я пробовал так много подходов с тех пор, как через несколько часов и до сих пор не могу найти оптимальный подход для достижения этого.

Задача состоит в том как сохранить файл и называют его, когда пользователь думает о добавления или удаленияitem или channel образуют файл XML.

Допустим, они хотят добавить:

<channel> 
<host>www.cnn.com</host> 
<item>america.news.cnn.com/fedd.xml</item> 
</channel> 

и они хотят, чтобы удалить:

<item> http://asia.bbc.com/feed.xml </item> из bbc.com<channel>

Как вытащить файл и добавить новый channel?

Что я пытаюсь сейчас с помощью:

<?php 

$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><user></user>"); 
$id= $xml->addChild('id'); 
$username = $xml->addChild('userName'); 
for ($i = 1; $i <= 8; ++$i) { 
    $channel= $xml->addChild('channel'); 
    $channel->addChild('host', 'www.bbc.com'); 
    $channel->addChild('item','http://asia.bbc.com/feed.xml'); 
} /**/ 

Header('Content-type: text/xml'); 
print($xml->asXML()); 
?> 

Это работает, но не сохраняет файл и страдает от добавления случайного количества items для случайного числа channels мгновенных.

EDIT: Еще одна вещь, когда побежал, этот код создает ОДНОЛИНЕЙНАЯ XML файл трудно читать и ** не проверяет **. валидатор говорит:

К сожалению

Этот корм не проверяет.

line 2, column 0: Undefined root element: user [help] 

    <user><id/><userName/><channel><host>www.bbc.com</host><item>http://asia.bbc 

...

Желание это может произвести несколько строк в качестве образца XML выше

Любое предложение?

+0

Вы пробовали [DOMDocument] (http://php.net/manual/en/domdocument.save.php)? – Abbasi

+0

@MuhammadKashifAbbasi Конечно, не против ... Любое предложение о том, как достичь чего-то подобного ... Спасибо! –

+0

попробуйте этот '$ xml-> asXML ('путь/filename.xml');' и за помощью с DOMDocument посмотрите на ответ – Abbasi

ответ

1

Просто, чтобы сохранить вы можете использовать $xml->asXML('path/filename.xml');

Вы можете посмотреть на этот пост, чтобы получить некоторую помощь Using SimpleXML and DOMDocument Together.

+0

Сохранение сработало ...thx –

+0

Конечно, до сих пор не удается выяснить, как: ** вызвать файл, когда Пользователь думает о добавлении или удалении элемента или канала или элементов и каналов из XML-файла. ** .... это приведет куда-нибудь. Thx –

+0

Попробуйте следующее сообщение, чтобы помочь [http://stackoverflow.com/questions/17331495/parse-and-edit-xml-file-in-php] [http://stackoverflow.com/questions/15156464/i- хочу-to-modify-the-existing-data-in-xml-file-using-php] – Abbasi

Смежные вопросы