1

これが私の現在のXMLファイル(books.xml)です:

<?xml version="1.0"?>
<books>
    <book>
        <isbn>123456789098</isbn>
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <edition>1</edition>
    </book>
</books>

この場合、エディションは1から99までの数字であり、ISBNの長さは本の属性の実際の概念とは異なり12桁であることに注意してください。

「本を追加」フォームがあり、既存のXMLファイルに新しい本を追加して、そのフォームから収集したデータを(postを使用して)保存したいと思います。PHPでこれを行うための最良の方法は何でしょうか?空のノードを保存するか、まったく何もしないかのどちらかで、私が行った方法が半分ずつ機能するため、その方法について混乱しています。

/*************************************
*code snippet of results.php
*************************************/
$doc = new DOMDocument();
$doc->load('books.xml');
$nodes = $doc->getElementsByTagName('books');
if($nodes->length > 0)
{
    $b = $doc->createElement( "book" );
    $isbn = $doc->createElement( "isbn" );
    $isbn->appendChild(
    $doc->createTextNode( $book['isbn'] ));
    $b->appendChild( $isbn );

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

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

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

    $doc->appendChild( $b );
  }
  $doc->save('books.xml');

ご協力ありがとうございました。

4

1 に答える 1

3

あなたはに追加する必要がありますdocumentElement

$doc->documentElement->appendChild( $b );

また、ドキュメントフラグメントを使用して、作業を簡単にすることもできます

$fragment = $doc->createDocumentFragment();
$fragment->appendXML("    <book>
        <isbn>{$book['isbn']}</isbn>
        <title>{$book['title']}</title>
        <author>{$book['author']}</author>
        <edition>{$book['edition']}</edition>
    </book>
");
$doc->documentElement->appendChild($fragment);

http://codepad.org/xoK4kLs8

于 2012-12-10T03:35:14.260 に答える