Highlighted

How to dump XML from a post

New Here ,
Jun 23, 2017

Copy link to clipboard

Copied

Hello all,

I have tried looking through the forum but could not find an answer......

I wanted to see if someone could tell me the best way dump XML that is posted to a cfm page we have setup. We will then insert into a table and the xmlparse directly from the table record.

Any assistance would be greatly appreciated.

Thank you very much!!!!

By POST I assume you mean the body content of the POSTed request is the raw XML:

     <cfif findNoCase("text/xml",cgi.CONTENT_TYPE)>

          <cfset variables.xmlText = getHTTPRequestData().content />

     </cfif>

Now variables.xmlText is the xml string. To dump it as an xml document you need to parse it into an xml document first:

     <cfset variables.xmlText = parseXML(variables.xmlText) />

     <cfdump var="#variables.xml#" />

Views

803

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

How to dump XML from a post

New Here ,
Jun 23, 2017

Copy link to clipboard

Copied

Hello all,

I have tried looking through the forum but could not find an answer......

I wanted to see if someone could tell me the best way dump XML that is posted to a cfm page we have setup. We will then insert into a table and the xmlparse directly from the table record.

Any assistance would be greatly appreciated.

Thank you very much!!!!

By POST I assume you mean the body content of the POSTed request is the raw XML:

     <cfif findNoCase("text/xml",cgi.CONTENT_TYPE)>

          <cfset variables.xmlText = getHTTPRequestData().content />

     </cfif>

Now variables.xmlText is the xml string. To dump it as an xml document you need to parse it into an xml document first:

     <cfset variables.xmlText = parseXML(variables.xmlText) />

     <cfdump var="#variables.xml#" />

Views

804

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Jun 23, 2017 0
LEGEND ,
Jun 23, 2017

Copy link to clipboard

Copied

Hi, sdettling222​,

The first thing to do is to make sure that the upload is going to a folder outside of the wwwroot that has execution privileges off.

Then parse the file using CFFILE and save it to a (scoped) variable, and use IsXML() to make sure that the file is XML.

If the XML file will always have the same format/layout, then you can use XmlSearch(xmlVar,/path/to/your/info) to create an array of the data.  You can then use XmlParse() to get the values.

HTH,

^ _ ^

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 23, 2017 0
New Here ,
Jun 23, 2017

Copy link to clipboard

Copied

Thank you very much for the reply.

I will get right to work looking into this option.

This will alway be the same structure with varying data. Im used to using cfhttp to hit a feed that returns XML, but really haven't worked with items posting to a page. I would like to first see what is being posted. Is there some kind of way that I can simply do a dump of the xml being send so I can add it to a table? It's just for testing purposes.

What would be great is if there was a universal #xml.output# variable that CF would know just to grab and insert.

Any feedback would be greatly appreciated!!!

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 23, 2017 0
LEGEND ,
Jun 26, 2017

Copy link to clipboard

Copied

For testing purposes, you can always CFDUMP it after you have used XmlParse() on it.

For example, once the file has been uploaded, use CFFILE to 'read' the XML into a variable, use XmlParse() on the variable to set another variable, then CFDUMP that.

<cffile action="read" file="/path/to/uploaded/file.xml" variable="variables.thisXML" />

<cfset variables.parsedXML = XmlParse(variables.thisXML) />

<cfdump var="#variables.parsedXML#" label="XML" expand="yes" />

HTH,

^ _ ^

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 26, 2017 0
New Here ,
Jun 26, 2017

Copy link to clipboard

Copied

Is there any way to simply ready the post instead of saving the file? I would like to insert into a database instead of saving a file.

Thanks!!!

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 26, 2017 0
LEGEND ,
Jun 26, 2017

Copy link to clipboard

Copied

There is a way to do that, I've done it.  Sadly that was many, many years ago, and I am not recalling how I did it.  I don't have access to those .cfm files to see, anymore.  But I remember setting it up so that if a user uploaded a file, that file was saved to a variable (as opposed to saving it to a folder) then directly inserted into a database BLOB.

Of course, this was for an intranet, not a public-facing website.  I didn't have to consider that some malicious actor would try to upload a virus.  If this is for a public-facing website, you'll want to save it to a folder that has execute permissions removed and allow a virus-checker to scan it before you do anything with it.

V/r,

^ _ ^

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 26, 2017 0
Advocate ,
Jun 26, 2017

Copy link to clipboard

Copied

By POST I assume you mean the body content of the POSTed request is the raw XML:

     <cfif findNoCase("text/xml",cgi.CONTENT_TYPE)>

          <cfset variables.xmlText = getHTTPRequestData().content />

     </cfif>

Now variables.xmlText is the xml string. To dump it as an xml document you need to parse it into an xml document first:

     <cfset variables.xmlText = parseXML(variables.xmlText) />

     <cfdump var="#variables.xml#" />

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 26, 2017 0
New Here ,
Jun 26, 2017

Copy link to clipboard

Copied

Thanks Steve, I will certainly try that...

Appreciate the feedback!!!!

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jun 26, 2017 0
BKBK LATEST
Adobe Community Professional ,
Jul 01, 2017

Copy link to clipboard

Copied

There are usually 2 ways to post XML to a CFM page:

1) via an upload action

<form method="post" enctype="multipart/form-data">

<input name="FileContents" type="file"> 

</form>

2) as a string, for example,

<form method="post">

<input name="xmlContent" type="text"> 

</form>

If the poster used the first method, then the uploaded file would be saved to disk, and you could proceed as WolfShade suggests. If the poster used the second method, then the XML file would be available on your CFM page as the variable form.xmlContent .

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jul 01, 2017 0