2012-04-19 8 views
0

こんにちは、私は、新しいエントリを.xmlファイルにアップロードできるフォームを作成することを楽しみにしています。 フォームは問題ではありません。問題はダイナミックとスタティックの新しいエントリを既存の.xmlファイルに追加することです。PHPを使用したXMLでのエントリの追加

私のXMLファイルは、以下のようになります。誰かがサンプルを持っていた場合

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<item><provider>Fabian</provider> 
<provider_itemid>1</provider_itemid> 
<name>Robe der Regalia</name> 
<origin>Art: Drop</origin> 
<description>Mindest-Stufe: Keine</description> 
<extension>CLASSIC</extension> 
<position>CHEST</position> 
<online_url>www.google.me</online_url> 
<lastupdate>28.03.2008 09:58:20</lastupdate> 
<realm>Hibernia</realm> 
<level>30</level> 
<quality>95</quality> 
<bonus>20</bonus> 
<armor af="30">CLOTH</armor> 
<effect id="HITPOINTS">27</effect> 
<effect id="ENCHANTMENTS">2</effect> 
<effect id="MENTALISM">2</effect> 
<effect id="VOID">2</effect> 
</item> 
</daoc_items> 

は素晴らしいことです! :) おかげ

UPDATEソリューション

<?php 
    $daoc_items = array(); 
    $daoc_items [] = array(
    'name' => 'Skyros-Hammer aus Arkanit', 
    'extensions' => 'test', 
    'description' => 'test', 
    'realm' => 'Midgard', 
    'level' => 'Midgard', 
    'quality' => "99", 
    'bonus' => "99", 
    'position' => "99", 
    'weapon' => "99", 
    'effect' => "99", 
    'origin' => "99", 
); 
    $daoc_items [] = array(
    'name' => 'Skyros-Hammer aus Arkanit', 
    'extensions' => 'test', 
    'description' => 'test', 
    'realm' => 'Midgard', 
    'level' => 'Midgard', 
    'quality' => "99", 
    'bonus' => "99", 
    'position' => "99", 
    'weapon' => "99", 
    'effect' => "99", 
    'origin' => "99", 
); 

    $doc = new DOMDocument(); 
    $doc->formatOutput = true; 

    $r = $doc->createElement("daoc_items"); 
    $doc->appendChild($r); 

    foreach($daoc_items as $item) 
    { 
    $b = $doc->createElement("item"); 

    $name = $doc->createElement("name"); 
    $name->appendChild(
    $doc->createTextNode($item['name']) 
); 
    $b->appendChild($name); 

    $extensions = $doc->createElement("extensions"); 
    $extensions->appendChild(
    $doc->createTextNode($item['extensions']) 
); 
    $b->appendChild($extensions); 

    $description = $doc->createElement("description"); 
    $description->appendChild(
    $doc->createTextNode($item['description']) 
); 
    $b->appendChild($description); 

    $realm = $doc->createElement("realm"); 
    $realm->appendChild(
    $doc->createTextNode($item['realm']) 
); 
    $b->appendChild($realm); 

    $level = $doc->createElement("level"); 
    $level->appendChild(
    $doc->createTextNode($item['level']) 
); 
    $b->appendChild($level); 

    $quality= $doc->createElement("quality"); 
    $quality->appendChild(
    $doc->createTextNode($item['quality']) 
); 
    $b->appendChild($quality); 

    $bonus= $doc->createElement("bonus"); 
    $bonus->appendChild(
    $doc->createTextNode($item['bonus']) 
); 
    $b->appendChild($bonus); 

    $position= $doc->createElement("position"); 
    $position->appendChild(
    $doc->createTextNode($item['position']) 
); 
    $b->appendChild($position); 

    $weapon= $doc->createElement("weapon"); 
    $weapon->appendChild(
    $doc->createTextNode($item['weapon']) 
); 
    $b->appendChild($weapon); 

    $effect= $doc->createElement("effect"); 
    $effect->appendChild(
    $doc->createTextNode($item['effect']) 
); 
    $b->appendChild($effect); 

    $origin= $doc->createElement("origin"); 
    $origin->appendChild(
    $doc->createTextNode($item['origin']) 
); 
    $b->appendChild($origin); 

    $r->appendChild($b); 
    } 

    echo $doc->saveXML(); 
    $doc->save("item.xml") 
    ?> 
+1

であなたが最も快適に感じるものを選びますよく形成される。 ;)(閉じタグdaoc_itemsに対応するオープンタグがありません) – Eineki

+0

上記のXML文書のルートノードが無効です。実際に動作するサンプルコードを参考にしてください。ドキュメントのどこにどのような要素を追加したいですか? [SimpleXML](http://php.net/manual/en/book.simplexml.php)はおそらくあなたのための解決策ですが、より詳細な情報が必要です。 – DaveRandom

答えて

0

あなたはsimplexmlのようなXMLパーサ/クラス内のビルドのいずれかを使用することができます:あなたが決定する方法を見つける必要があり勿論

$filename = 'my_xml_file.xml'; 
$items = simplexml_load_file($filename); 

$items->item[0]->addChild('tagname', 'value'); 
$items->asXML($filename); 

をどの項目を子に追加したいのですか(今すぐ最初の項目を取得する$items->item[0]という行を確認してください)。

まず最初に行うには、そのXMLファイルを保証することであるhttp://nl.php.net/manual/en/book.simplexml.phpでドキュメントを読み、また、他のXML操作クラスに見て、特定のDOMで、かつ

関連する問題