1

I have the following xml file:

<products>
<info><productName>Chocolate Cake</productName> <productDescription>uieovbeveb</productDescription><quantity>1</quantity><stock>22</stock><price>2.99,12.99</price><size>200 ml</size><type>India,colombia</type></info>
<info><productName>watermelon</productName><productDescription>fr</productDescription><quantity>rf</quantity><stock>34</stock><price>4</price><size>4</size><type>5</type></info>
</products>

I would like to access one of the the productDescription tag of one of the product and change its value, however it is not working.

Here is what I tried until now:

if (isset($_POST['editProduct'])) {


$xml = new DomDocument("1.0", "UTF-8");
$xml->load('./data/productDB.xml');

$productName = $_POST['productName'];
$productDescription = $_POST['productDescription'];
$quantity = $_POST['quantity'];
$stock = $_POST['stock'];
$price = $_POST['price'];
$size = $_POST['size'];
$type = $_POST['type'];
$sizetoString = implode(",", $size);
$typetoString = implode(",", $type);
$pricetoString = implode(",", $price);

$products = $xml->getElementsByTagName('info');


foreach($products as $product) {
    $nameOfProduct = $product->getElementsByTagName('productName')->item(0)->nodeValue;

    if($nameOfProduct == $productName) {
        $product->getElementsByTagName('productDescription')->item(0)->nodeValue="";
        $product->getElementByTagName('productDescription')->item(0)->appendChild($product->createTextNode($productDescription));

    }
}

$xml->save("./data/productDB.xml");

1 Answer 1

1

Try this example:

// load the document
$products = simplexml_load_file('test.xml');

// loop through each product and change description
foreach($products as $product) {
    $product->productDescription = 'new description';
}

// save the new xml
$products->asXML('test.xml');
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.