[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Editting specific data in XML using PHP

Posted on 2011-09-29
2
Medium Priority
?
311 Views
Last Modified: 2012-05-12
Hello EE,

I am working on a small project that is making a small shopping website.

I am trying to implement the following code:

// Read the saved session variable
$myCart = $_SESSION["Cart"];

// Load the XML Document
$doc = new DomDocument('1.0');
$doc->load( "data.xml" );
$getItems = $doc->documentElement;

// Iterate through the array passed through containing the items.
foreach( $myCart as $Item )
{
	// Create a new XPath Variable.
	$xpath = new DOMXPath( $doc );

	// Get the correct element needed to be changed.
	$getSold = $xpath->query('/Items/Item[ItemID="' + $Item + '"]/Sold');
	$getHold = $xpath->query('/Items/Item[ItemID="' + $Item + '"]/Hold');

	// Change it to the new values.
	$getSold->item(0)->nodeValue += $getHold;
	$getHold = "0";
}

// Save the XML Document
$doc->save( $filename );
echo $doc->saveXML();

Open in new window


In this code, I am storing a session variable of "Item IDs" that will be copied into a variable and the code will iterate through all the elements in the array.

For each Item ID, I need to increment the corresponding "Sold" value by the "Hold" value and reset the value of "Hold" back to "0" in an XML document that is loaded.

At the end, the XML document needs to be saved.

The XML File looks like the following:

<?xml version="1.0" encoding="utf-8"?>
<Items>
	<Item>
		<ItemID>ABC001</ItemID>
		<Name>Book1</Name>
		<Price>4.99</Price>
		<Qty>5</Qty>
		<Hold>5</Hold>
		<Sold>0</Sold>
	</Item>
	<Item>
		<ItemID>ABC002</ItemID>
		<Name>Book2</Name>
		<Price>14.99</Price>
		<Qty>5</Qty>
		<Hold>5</Hold>
		<Sold>1</Sold>
	</Item>
	<Item>
		<ItemID>ABC003</ItemID>
		<Name>Book3</Name>
		<Price>24.99</Price>
		<Qty>5</Qty>
		<Hold>10</Hold>
		<Sold>2</Sold>
	</Item>
</Items>

Open in new window


Please note I'm quite new to working with XML and XPath and I hope this makes sense and someone can help me.

Thank you very much in advance.
0
Comment
Question by:mr_stevie
  • 2
2 Comments
 
LVL 1

Accepted Solution

by:
mr_stevie earned 0 total points
ID: 36814108
After hours of trial and error, managed to whip up the following code which seems to work the way I want it:

 
// Load the XML Document
$doc = new DomDocument('1.0');
$doc->load( "data.xml" );
$getItems = $doc->documentElement;

// Iterate through the array passed through containing the items.
foreach( $myCart as $Item => $ItemValue )
{
	// Create a new XPath Variable.
	$xpath = new DOMXPath( $doc );
	
	// Make Query String
	$SoldQuery = "/Items/Item[ItemID=\"" . $Item . "\"]/Sold";
	$HoldQuery = "/Items/Item[ItemID=\"" . $Item . "\"]/Hold";

	// Get the correct element needed to be changed.
	$getSold = $xpath->query( $SoldQuery );
	$getHold = $xpath->query( $HoldQuery );

	// Change it to the new values.
	$getQty->item(0)->nodeValue += $getHold->item(0)->nodeValue;
	$getHold->item(0)->nodeValue = "0";
}

// Save the XML Document
$doc->save( $filename );
echo $doc->saveXML();

Open in new window

0
 
LVL 1

Author Closing Comment

by:mr_stevie
ID: 36814116
Solution was developed by the original poster whilst waiting for an answer.
0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Australian government abolished Visa 457 earlier this April and this article describes how this decision might affect Australian IT scene and IT experts.
Strategic internal linking is often considered an SEO power technique, especially for content marketing. Do you need to hire an SEO agency to optimize you internal linking? No, this article will help you understand the basics of internal linking and…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…
The is a quite short video tutorial. In this video, I'm going to show you how to create self-host WordPress blog with free hosting service.
Suggested Courses
Course of the Month18 days, 15 hours left to enroll

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question