Getting The String Representation Of One ColdFusion XML Node
Posted September 20, 2007 at 3:27 PM
I can't remember how this came up, but the other day I was talking to this girl about XML; it was a pretty engaging conversation, as you can probably well imagine. I was trying to explain the difference between a ColdFusion XML document object and an XML string when the question occurred to me - can you use ToString() to get a partial representation of an XML document object.
Traditionally, you can call ToString() on an entire ColdFusion XML document to get an XML string representation:
Launch code in new window » Download code as text file »
- #ToString( xmlDocumentObject )#
But, what about calling that on an individual XML node that is within the XML document. I gave it a go:
Launch code in new window » Download code as text file »
- <!--- Define our ColdFusion XML document object. --->
- <cfxml variable="xmlGirls">
-
- <girls>
- <girl>
- <name>Samantha</name>
- <age>27</age>
- <hair>Blonde</hair>
- </girl>
- <girl>
- <name>Kim</name>
- <age>32</age>
- <hair>Brunette</hair>
- </girl>
- <girl>
- <name>Cindi</name>
- <age>25</age>
- <hair>Black</hair>
- </girl>
- </girls>
-
- </cfxml>
-
-
- <!--- Get the third girl. --->
- <cfset arrNodes = XmlSearch( xmlGirls, "//girl[ 3 ]" ) />
-
- <!--- Get a pointer to the girl node. --->
- <cfset xmlGirl = arrNodes[ 1 ] />
-
- <!---
- Output the string representation of JUST this node
- taken from the XML document.
- --->
- #HtmlEditFormat(
- ToString( xmlGirl )
- )#
As you can see, we are calling ColdFusion's ToString() method on only the third girl element node in the XML document. Running this gives us the following output:
Launch code in new window » Download code as text file »
- <?xml version="1.0" encoding="UTF-8"?>
- <girl>
- <name>Cindi</name>
- <age>25</age>
- <hair>Black</hair>
- </girl>
Pretty cool! Not only did it give us the string representation of the single XML node, it also gave us the XML document type.
NOTE: I modified the tabbing of the outputted string for easier reading.
Download Code Snippet ZIP File
Post Comment | Ask Ben | Other Searches | Print Page
Newer Post
Getting Only The Date Part Of A Date/Time Stamp in SQL Server (Revisited)
Older Post
Convert jQuery XML Documentation To HTML / PDF Using ColdFusion And XSLT
Reader Comments
Definitely did not know you could do that. Cool, and thanks for pointing it out!
No worries. Been doing a lot of XML learning lately.
Great tips, thanks for it.
Hi Ben, do you know of an easy way to strip the XML declaration or to get the string representation without the XML declaration?
I did this:
<cfset xmlString = ToString(xmlNode)>
<cfif xmlString contains "<?xml">
<cfset xmlString=ListDeleteAt(xmlString ,1,">")>
<cfset xmlString=Right(xmlString ,Len(xmlString )-1)>
</cfif>
It's ugly, but it seems to do the trick.
@Nat,
You can use a regular expression (regEx) to remove the declaration:
XmlString = REReplace( XmlString, "<\?xml[^>]*>", "", "one" )
That's a good solution. Thanks.




