2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
嘗試這個(gè):
<?php
if(isset($_POST['submitSave'])){
? ? $products = new DOMDocument('1.0');
? ? $products->preserveWhiteSpace = false;
? ? $products->formatOutput = true;
? ? // $doc->load('data/product.xml');
? ? $product = $products->createElement('product');
? ? $product->setAttribute('id', $_POST['id']);
? ? $name = $products->createElement('name', $_POST['name']);
? ? $price = $products->createElement('price', $_POST['price']);
? ? $products->appendChild($product);
? ? $product->appendChild($name);
? ? $product->appendChild($price);
? ? file_put_contents('data/product.xml', $products->saveXML());
? ? // echo $products->saveXML();
}
?>
這是沒(méi)有 POST 參數(shù)的ideone上的演示
這是我在本地機(jī)器上的輸出,使用后置參數(shù)
編輯:這里要求的是保留舊數(shù)據(jù)的代碼
<?php
if(isset($_POST['submitSave'])){
? ? // Disable errors due to empty xml files
? ? error_reporting(E_ALL & ~E_WARNING);
? ? $domDoc = new DOMDocument('1.0');
? ? $domDoc->preserveWhiteSpace = false;
? ? $domDoc->formatOutput = true;
? ? // load xml file
? ? try {
? ? ? ? $domDoc->load('./data/product.xml');
? ? } catch (\Throwable $th) {
? ? ? ? //throw $th;
? ? }
? ? if($domDoc->getElementsByTagName('products')->length>0){
? ? ? ? // If we already have products tag defined
? ? ? ? $products = $domDoc->getElementsByTagName('products')[0];
? ? }else{
? ? ? ? // If we don't have any products tag, i.e. file is empty
? ? ? ? $products = $domDoc->createElement('products');
? ? }
? ? // Create child node for product and set id(attribute), name(child), price(child)
? ? $product = $domDoc->createElement('product');
? ? $product->setAttribute('id', $_POST['id']);
? ? $name = $domDoc->createElement('name', $_POST['name']);
? ? $price = $domDoc->createElement('price', $_POST['price']);
? ? $domDoc->appendChild($products);
? ? $products->appendChild($product);
? ? $product->appendChild($name);
? ? $product->appendChild($price);
? ? file_put_contents('./data/product.xml', $domDoc->saveXML());
}
?>
這是我本地機(jī)器上的輸出:

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
輸出文件是 product.xml。對(duì)于測(cè)試,我使用http://localhost/teste.php?id=p02&name=Name2&price=200¤cy=USD
$xmlstr= "<products></products>";
$sxe = new SimpleXMLElement($xmlstr);
$product = $sxe->addChild('product');
$product->addAttribute('id', $_REQUEST['id']);
$product->addChild('name', $_REQUEST['name']);
$price = $product->addChild('price', $_REQUEST['price']);
$price->addAttribute('currency', $_REQUEST['currency']);
$xmlOutput = $sxe->asXML();
file_put_contents('product.xml',$xmlOutput);
- 2 回答
- 0 關(guān)注
- 170 瀏覽
添加回答
舉報(bào)