Sharing structured data

XML Magazine

Subscribe to XML Magazine: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get XML Magazine: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

XML Authors: Jayaram Krishnaswamy, APM Blog, Progress Blog, Greg Schulz, Jason Rahm

Related Topics: ColdFusion on Ulitzer, XML Magazine

CFDJ: Article

Using XML in ColdFusion, XML is 8 Years Old

How many of you have been using it that long?

XML is over 8 years old. How many of you have been using it that long? (Feel free to raise your hand.) I don't see a lot of hands, which doesn't surprise me. However, I bet a lot of you have used XML without even knowing it.

XML has great flexibility and there are numerous uses. Its use is becoming more and more common with every passing day. You've probably come across it in some form even if you didn't know it was XML. If you haven't used it yet, you will soon. This article is all about XML and XML within ColdFusion.

What Is XML?
An explanation seems like a good way to start this article, so what is XML exactly? XML stands for eXtensible Markup Language. This markup language is tag-based similar to HTML or (most of) CFML. Whereas HTML is used to define the look and feel of a Web page and CFML is designed to issue commands to the ColdFusion application server, XML is used to define data. The primary use of XML is to share data between different systems. Sometimes these systems are radically different.

The main advantage to using XML is that if properly designed, it can be easily read by both a computer and a person (even some non-technical people). It supports Unicode so many types of information can be translated. XML is usually provided as plain text and is free from any license restrictions and easily readable from any language. It does have some drawbacks, however. The syntax is fairly verbose. That can make for good readability, but can decrease processing efficiency especially when dealing with large amounts of data. Binary data formats are known to be much more efficient. As an example, Flash Remoting is more efficient than Web services for this very reason. XML does not have any inherent support for advanced data types, so you'll have to run some processing to turn an XML object into a native ColdFusion structure or array. As you have seen in this article it can be cumbersome to access individual elements in an XML document.

There are two requirements of an XML document: they must be well formed and the must be valid. A well-formed document is one that conforms to the syntax rules. To make sure that you conform you should follow some of these simple rules:

  • Close all tags. Even tags that do not contain data between the open and close tag need to be closed. It's fine to use the shorthand syntax, which is to close it before the close bracket, but it must be closed.
  • Make sure there is only a single root element. Multiple root elements are invalid in XML.
  • Put all attribute values in quotes, either single or double.
  • Tags must not overlap. You can nest tags, but make sure you properly close all the inner tags before you close the outer tags.
Follow these instructions to make sure that your XML is well formed.

To determine validity, we compare the XML document against the DTD (Document Type Definition) or XSD (XML Schema Definition). The DTD, or XSD, define the tags and attributes to those tags that make up your XML syntax. Both HTML and CFML have a specific set of defined tags and the attributes that can be used with those tags, but XML does not. It's up to you to define the tags that make up your XML in a DTD or XSD. You can use a DTD or XSD to define things like the names of tags, their data types, their attributes, whether they are required or optional, and their children if any. To determine if an XML document is valid, compare the XML to the rules in the DTD or XSD.

Unfortunately, in my experience with the corporate world, most developers do not bother to create either of these types of documents, so verifying for validity is often not an option. But, there are some common implementations of XML that are in use. You've probably heard or used many of them. Here are a few:

  • WDDX: WDDX is a specific dialect of XML and one that integrated with ColdFusion even before CF had native XML capabilities. If you ever used WDDX, you were using XML without even knowing it.
  • RSS: RSS is used for thesyndication of Web data. Its usage is very common in blog sites. CFDJ offers RSS feeds for their articles. This example shows an RSS feed of all the articles that I've written:
  • SOAP: SOAP is the language of Web services. It stands for Simple Object Access Protocol and is XML.
  • XHTML: XHTML is an XML version of XML. It has a stricter syntax than HTML (for example, all tags must be closed). It is expected to be the long-term successor to HTML.
  • MXML: MXML is the language of Macromedia Flex and it's an XML implementation.
Next, I'm going to show you how to create and use XML objects in ColdFusion.

Creating an CF XML Object
There are two different ways that you can create an XML object inside ColdFusion. The first is to use the CFXML tag, and the second is to use the XMLParse function. CFXML is good if you are going to create an XML document from scratch within ColdFusion. The XMLParse function will take a string that contains an XML document and return the XML document.

More Stories By Jeffry Houser

Jeffry is a technical entrepreneur with over 10 years of making the web work for you. Lately Jeffry has been cooped up in his cave building the first in a line of easy to use interface components for Flex Developers at . He has a Computer Science degree from the days before business met the Internet and owns DotComIt, an Adobe Solutions Partner specializing in Rich Internet Applications. Jeffry is an Adobe Community Expert and produces The Flex Show, a podcast that includes expert interviews and screencast tutorials. Jeffry is also co-manager of the Hartford CT Adobe User Group, author of three ColdFusion books and over 30 articles, and has spoken at various events all over the US. In his spare time he is a musician, old school adventure game aficionado, and recording engineer. He also owns a Wii. You can read his blog at, check out his podcast at or check out his company at

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.