1

重複の可能性:
php を使用して既存の xml ファイルに書き込む方法

SimpleXML を使用して既存の XML ファイルに書き込もうとしています (マシューがphp を使用して既存の xml ファイルに書き込む方法で述べているように)、私の XML ファイルにはより多くの項目があります (これは私の XML ファイルの実際の構造ではなく、例として使用します)。

<Books>
<Authors>
    <WeiMengLee>
        <Book>Beginning iOS 4 Application Development</Book>
    </WeiMengLee>
</Authors>
</Books>

私の質問は、PHP で SimpleXML を使用して「WeiMengLee」アイテムに新しい「Book」を追加するにはどうすればよいですか?

4

2 に答える 2

1

vascowhite が既に述べたように、xml ファイルの構造を再考してください。とにかく、ここにいくつかのコードがあります.xmlファイルを開き、wei meng leeセクションで利用可能なすべての本をループしてタイトルを出力し、新しい本をセクションに追加し、最後にファイルをディスクに保存します. Webサーバーがphpスクリプトを実行するユーザーがxmlファイルに書き込み可能であることを確認してください。

//read info from xml file to structured object
$xml = new SimpleXMLElement('bla.xml', null, true);

//loop all available books for wei meng lee
foreach( $xml->Authors->WeiMengLee->Book as $book)
{
    //print book title + newline
    print $book . "<br />";
}

//add a new book entry to your xml object
$xml->Authors->WeiMengLee->addChild("Book", "HERE GOES THE TITLE");

//save the changes back to the xml file
//make sure to set proper file access rights 
//for bla.xml on the webserver
$xml->asXml('bla.xml');

これが役立つことを願っています 8)

于 2013-01-05T22:09:51.923 に答える
0

xml が書籍に関するものか、著者に関するものかを決定する必要があります。

本に関するものであれば、次のようになります。

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
</books>

次に、次のように新しい本を追加できます。

$xml = new SimpleXMLElement("filename.xml", null, true);

$book = $xml->addChild('book');
$book->addChild('title', 'Another Book');
$book->addChild('Author', 'WeiMengLee');
$xml->asXML('filename.xml');

出力:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
    <book>
        <title>Another Book</title>
        <Author>WeiMengLee</Author>
    </book>
</books>

一方、xml が著者に関するものである場合は、次のようになります。

<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
        </books>
    </author>
</authors>

そして、次のような別の本を追加します:-

$xml = new SimpleXMLElement("filename.xml", null, true);

foreach($xml as $author){
    if($author->name == 'WeiMengLee'){
        $weimenglee = $author;
    }
}

$weimenglee->books->addChild('book', 'Another book');

$xml->asXML('filename.xml');

出力:-

<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
            <book>Another book</bmook>
        </books>
    </author>
</authors>
于 2013-01-05T22:20:33.283 に答える