Link to home
Start Free TrialLog in
Avatar of Brant Snow
Brant Snow

asked on

Create an xml file from a flash file

K, so i am working on this project where all the calculations were going to be calculated and used in the flash file to use and display.  The scope has changed now so they want the results set to be exported to an xml file and the parsing and interface will be done somewhere else.  I work in php and know how I would do this in php but i have already written all the code in flash for the calculations and i dont want to spend the time to convert it all.  Is there anyway in flash to write an xml file to a server etc or would it be easiest to pass the information into php or something and try doing it that way.  How would i go about doing that if that was the best way?
Avatar of Bernard Savonet
Bernard Savonet
Flag of France image

The idea of working from data ->  php -> flash -> xml would frighten me, and I would shortuct the flash part. Most of the computations done there would probably easily be translated as php and xml...
No you can do this easily with Flash by building the xml in flash based on your calculations and then send that data to PHP.

Use the XML class
// create an XML document
var doc:XML = new XML();
// create three XML nodes using createElement()
var element1:XMLNode = doc.createElement("element1");
var element2:XMLNode = doc.createElement("element2");
var element3:XMLNode = doc.createElement("element3");
// place the new nodes into the XML tree
doc.appendChild(element1);
element1.appendChild(element2);
element1.appendChild(element3);
// create two XML text nodes using createTextNode()
var textNode1:XMLNode = doc.createTextNode("textNode1 String value");
var textNode2:XMLNode = doc.createTextNode("textNode2 String value");
// place the new nodes into the XML tree
element2.appendChild(textNode1);
element3.appendChild(textNode2);
trace(doc);
// output (with line breaks added between tags):
// <element1>
// <element2>textNode1 String value</element2>
// <element3>textNode2 String value</element3>
// </element1>

Open in new window

then you can use the sendAndLoad() function to send the xml to php.  this will wait for a reply from the php page.  if you don't need a response from the server then just use send()
var login_str:String = "<login username=\""+username_txt.text+"\"
password=\""+password_txt.text+"\" />";
var my_xml:XML = new XML(login_str);
var myLoginReply_xml:XML = new XML();
myLoginReply_xml.ignoreWhite = true;
myLoginReply_xml.onLoad = myOnLoad;
my_xml.sendAndLoad("http://www.flash-mx.com/mm/login_xml.php",
myLoginReply_xml);
function myOnLoad(success:Boolean) {
if (success) {
if ((myLoginReply_xml.firstChild.nodeName == "packet") &&
(myLoginReply_xml.firstChild.attributes.success == "true")) {
gotoAndStop("loggedIn");
} else {
gotoAndStop("loginFailed");
}
} else {
gotoAndStop("connectionFailed");
}
}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Rob
Rob
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Brant Snow
Brant Snow

ASKER

But when i send the xml over to the php i didnt see you reference a file.  Where can i use $_POST['xml'];
$_POST['type'];?  

When it is waiting for a response from the php as you said what page or coding is that directed at?
There isn't a need to reference a file as flash has built in capabilities to create an xml document on the fly, just like you would in php
There are 2 ways you can send data and xml to PHP

1) using the XML class

2) using the LoadVars class