Presentation is loading. Please wait.

Presentation is loading. Please wait.

XML processing in ColdFusion MX

Similar presentations


Presentation on theme: "XML processing in ColdFusion MX"— Presentation transcript:

1 XML processing in ColdFusion MX
Everything you wanted to know about XML, but were afraid to ask October 2006 Jaxfusion User Group

2 About the Presenter David Fekke Working with XML 1999
Lead for Vurv HR-XML API

3 Covered in this presentation
Properly formed XML ColdFusion XML Tags and functions XPath queries XML XSDs and Validation XML Namespaces DOM vs. Streaming parsers StAX API

4 XML eXtensible Markup Language Originated from SGML W3C standard
More versatile then Flat files

5 XML Syntax XML declaration
<?xml version="1.0" encoding="UTF-8"?> Must have one root tag <pre:roottag> </pre:roottag> All tags must have closing tag. <br />: single tags can have forward slash at the end <tag name=“value” /> tags can have attributes

6 Pre MX XML features WDDX SOXML custom tag, windows only

7 ColdFusion MX 6 CFXML tag turns serialized XML into a ColdFusion object XMLParse() function ColdFusion XML Object works like series of structures and arrays XMLSearch() function XMLSearch Uses XPath queries to return array of XML nodes

8 XML Check functions IsXML IsXmlDoc IsWDDX IsXmlAttribute IsXmlElem
IsXmlNode IsXmlRoot

9 XML editing functions XmlNew() XmlChildPos() XmlTransform()
XmlElemNew()

10 ColdFusion MX 7 Functions
XmlGetNodeType() XmlValidate()

11 XPath queries Provides a way to pull the elements you need without having to iterate through the entire DOM /rootelement/parent/childelement //childelement /rootelement/parent[childelement = “foo”] Used with XSLT templates

12 XML Validation Define XML with DTD or XSD
XSD preferred method for validation XSD uses an XML format Allows for strict and custom datatypes Allows for pattern recognition

13 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="FirstName" type="xs:string"/> <xs:element name="LastName" type="xs:string"/> <xs:element name="Age" type="xs:string"/> <xs:element name="customer"> <xs:complexType> <xs:sequence> <xs:element ref="FirstName" /> <xs:element ref="LastName" /> <xs:element ref="Age" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="customers"> <xs:element ref="customer" maxOccurs="unbounded" /> </xs:schema>

14 <?xml version="1.0" encoding="UTF-8" ?>
<customers> <customer> <FirstName>Dwight</FirstName> <LastName>Mercer</LastName> <Age>32</Age> </customer> <FirstName>Miguel</FirstName> <LastName>Cabrera</LastName> <Age>33</Age> </customers>

15 Default XSD element types
xs:String xs:normalizedString xs:integer xs:base64Binary xs:negativeInteger xs:positiveInteger xs:Hexbinary xs:Long xs:short

16 Custom Types <xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType>

17 XML Namespaces Namespaces allow for XML to be segmented into different parts <namespace:elementName /> namespace will prefix the element name <fekke:root xmlns:fekke=“ No namespace xmlns=“” Use explicit XPath with no namespace Nonamespace xpath=“/:element”

18 DOM, SAX and Pull Parsers
ColdFusion uses a DOM parser. Entire XML object in memory. SAX parser reads in file portion of the time. Raises events when elements match. StAX uses pull based parser to read one node at time. Uses streams to read in portion

19 StAX BEA JSR 173 Many implementations Includes Event and Pull parsers
Jim Collins working on CFStAX library Woodstox library extremely fast implementation

20 StAX objects XMLInputFactory XMLStreamConstants XMLStreamReader
XMLEventReader

21 XMLStreamConstants Constants for different node types
XMLStreamConstants.START_ELEMENT XMLStreamConstants.END_ELEMENT XMLStreamConstants.START_DOCUMENT XMLStreamConstants.END_DOCUMENT

22 XmlStreamReader methods
Next() iterates through XML stream getLocalName() returns tag name getAttributeCount() returns tags attribute count getAttributeLocalName() returns attribute name getAttributeValue() returns attribute value hasText() returns boolean if element has text getText() returns element text

23 Free XML Tools IE and Firefox have built in DOM parsers
XMLFox for testing validation XMLButterfly for editing and formatting XML Don’t use ALtova XML Spy, its crap!

24 Summary Use XMLSearch instead of iterating through DOM
Don’t use cfsavecontent to build XML, use CFXML If using no namespace, use explicit xpaths Use xmlFormat or CDATA to handle special characters Use XSDs over DTDs

25 Links http://www.w3.org/XML/ http://www.w3.org/XML/Schema

26 Books ColdFusion Application Development
Beginning XML (Programmer to Programmer) O’reilly XML in a Nutshell


Download ppt "XML processing in ColdFusion MX"

Similar presentations


Ads by Google