我已经阅读了很多关于这个主题的相关问题,似乎找不到一个突出显示保存到2个单独的XML文件的问题。
我正在上传电子书时创建一个新的XML文件。对于此示例,它将保存在“new_file.xml”中。同时,我需要将新信息(在此示例中为<product>
)添加到名为“full_collection_file.xml”的完整集合文件中,并对该文件进行更新。因此,每次上传新电子书时,“full_collection_file.xml”都会添加一个新的<product>
。
这是简单的“new_file.xml”的当前结构:
$xml = new DomDocument('1.0', 'UTF-8');
$message = $xml->createElement('ONIXMessage');
$release = $xml->createAttribute('release');
$release->value = '3.0';
$message->appendChild($release);
$header = $xml->createElement('Header');
$FromCompany = $xml->createElement('FromCompany','My Company');
$header->appendChild($FromCompany);
$FromEmail = $xml->createElement('FromEmail','support@ebooks.com');
$header->appendChild($FromEmail);
$SentDate = $xml->createElement('SentDate','201408181805');
$header->appendChild($SentDate);
$message->appendChild($header);
$product = $xml->createElement('Product');
$RecordReference = $xml->createElement('RecordReference','B00BBE4BFE');
$product->appendChild($RecordReference);
$NotificationType = $xml->createElement('NotificationType','03');
$product->appendChild($NotificationType);
$message->appendChild($product);
$xml->appendChild($message);
$xml->save('new_file.xml');
这可以很好地创建第一个XML文件(“new_file.xml”),但无论我在同一区域内尝试做什么,我似乎都无法正确加载和更新“full_collection_file.xml”。我应该尝试分别完成这两件事,而不是同时完成吗?似乎多余,但我希望你可以同时有2个DomDocument文件。
答案 0 :(得分:1)
您只需要第二个DomDocument
对象,然后导入新的Product
节点,并将其附加到所需位置:
$doc = new DomDocument('1.0', 'UTF-8');
$doc->load('full_collection_file.xml');
$node = $doc->importNode($product, true);
$doc->documentElement->appendChild($node);
显然,如果您不想在<Product>
的文档元素处找到新的full_collection_file.xml
节点,那么您将要相应地更改该最后一行。
答案 1 :(得分:0)
从TML更新:
$xml = new DomDocument('1.0', 'UTF-8');
$message = $xml->createElement('ONIXMessage');
$release = $xml->createAttribute('release');
$release->value = '3.0';
$message->appendChild($release);
$header = $xml->createElement('Header');
$FromCompany = $xml->createElement('FromCompany','My Company');
$header->appendChild($FromCompany);
$FromEmail = $xml->createElement('FromEmail','support@ebooks.com');
$header->appendChild($FromEmail);
$SentDate = $xml->createElement('SentDate','201408181805');
$header->appendChild($SentDate);
$message->appendChild($header);
$product = $xml->createElement('Product');
$RecordReference = $xml->createElement('RecordReference','B00BBE4BFE');
$product->appendChild($RecordReference);
$NotificationType = $xml->createElement('NotificationType','03');
$product->appendChild($NotificationType);
$message->appendChild($product);
$xml->appendChild($message);
$xml->save('new_file.xml');
$full_xml = new DomDocument('1.0', 'UTF-8');
$full_xml->load('full_collection_file.xml');
$node = $full_xml->importNode($product, true);
$full_xml->documentElement->appendChild($node);
$full_xml->save('full_collection_file.xml');