0

こんにちは。新しいエントリを.xmlファイルにアップロードできるフォームを作成するのを楽しみにしています。フォームは問題ではありません。私にとっての問題は、既存の.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>

誰かがサンプルを持っていたら素晴らしいでしょう!:) ありがとう

ソリューションの更新

<?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")
  ?> 
4

1 に答える 1

0

simplexmlのように、ビルドインxmlパーサー/クラスの1つを使用できます。

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

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

もちろん、子を追加するアイテムを決定する方法を見つける必要があります($items->item[0]これで最初のアイテムを取得するという行を確認してください)。

http://nl.php.net/manual/en/book.simplexml.phpにあるドキュメントを読み、他のxml操作クラス(特にDOM)も調べて、最も使いやすいクラスを選択してください。

于 2012-04-19T14:16:33.760 に答える