这是我当前的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');
感谢您的帮助。
答案 0 :(得分: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);