Creare documenti XML
ColdFusion fornisce molte funzioni per gestire i documentiXML. Questa parte della guida parlerà di questefunzioni e di come impiegarle efficacemente.
Creare documenti XML
Ci sono molti modi per creare nuovi documenti XML, i qualivengono trattati da ColdFusion come delle strutture.L'elemento radice di un documento XML può essereraggiunto così:
xmlDoc.xmlRoot;<!--- oppure... --->xmlDoc.rootName <!--- dove l'elemento radice è <rootName/>. --->
XmlParse()
La funzione XmlParse()
viene usata perconvertire una stringa XML in un oggetto rappresentante undocumento XML, il che permette di interagire con esso tramitevarie funzioni ColdFusion. La funzione ha i seguentiparametri:
Parametro | Descrizione |
---|---|
xmlText | Obbligatorio. Può assumere uno qualsiasi deiseguenti valori:
|
caseSensitive | Valore booleano opzionale. Se è true (false didefault), le proprietà dell'oggetto(elementi e attributi) saranno case sensitive. Quandoun oggetto è case sensitive, si deve usare lanotazione a parentesi per riferirsi ad elementi edattributi. |
validator | Opzionale. Può assumere uno dei seguenti valori:
|
Il seguente esempio mostra come usare tale funzione.
Es.1: XmlParse.cfm
<html> <head> <title>XmlParse()</title> </head> <body> <h1>XmlParse()</h1> <cfset xmlGeorge=XMLParse(ExpandPath("George.xml"))> <cfoutput> <h2>#xmlGeorge.Name.XmlAttributes.Title# #xmlGeorge.Name.FirstName# #xmlGeorge.Name.LastName#</h2> </cfoutput> <cfdump var="#xmlGeorge#"> </body></html>
In un browser, l'esempio appena trattato appariràcome segue:
Fig1: output del codice dell'esempio 1
Come potete vedere, le proprietà del documento XMLpossono essere usate come una struttura ColdFusion. Glielementi vengono riferiti come proprietà dirette delloro elemento genitore, mentre gli attributi devono essererichiamati attraverso la strutturaXmlAttributes
.
XmlNew(), XmlElemNew(), xmlRoot, XmlChildren, XmlAttributes
I nuovi documenti XML possono essere creati da zero usando lafunzione XmlNew()
.Gli elementi vengono aggiuntitramite la funzione XmlElemNew()
, la qualerichiede l'oggetto rappresentante il documento XML delquale l'elemento sarà parte e il nome del nuovoelemento. L'emento radice dovrebbe essere assegnato allaproprietà xmlRoot
del documento XML.elementi e attributi sono posizionati nel documento tramiteXmlChildren
e XmlAttributes
.L'esempio seguente mostra come creare un documento XML dazero.
Es.2: XmlNew.cfm
<!--- Crea un documento XML ---> <cfset docGeorge=XmlNew()> <!--- Setta l'elemento radice ---> <cfset docGeorge.xmlRoot = XmlElemNew(docGeorge,"Name")> <!--- setta un attributo per l'elemento radice ---> <cfset docGeorge.xmlRoot.XmlAttributes.Title = "President"> <!--- Crea gli elementi FirstName e LastName ---> <cfset elemFirstName = XmlElemNew(docGeorge,"FirstName")> <cfset elemLastName = XmlElemNew(docGeorge,"LastName")> <!--- Setta i valori testuali per gli elementi appena creati ---> <cfset elemFirstName.XmlText = "George"> <cfset elemLastName.XmlText = "Washington"> <!--- Appende gli elementi creati all'elemento radice ---> <!--- Si noyi che questo può esser fatto usando xmlRoot o il nome dell'elemento radice ---> <cfset docGeorge.xmlRoot.XmlChildren[1] = elemFirstName> <cfset docGeorge.Name.XmlChildren[2] = elemLastName> <!--- Converte il documento XML in una stringa ---> <cfset xmlString = ToString(docGeorge)> <!--- Setta il contenuto a text/xml, Svuota il buffer e stampa in output la stringa XML ---> <cfcontent type="text/xml" reset="yes"><cfoutput>#xmlString#</cfoutput>
Il codice appena presentato verrebbe così reso in unbrowser:
<Name TITLE="President"> <FirstName>George</FirstName> <LastdName>Washington<LastdName></Name>
The <cfxml> Tag
Il tag <cfxml>
può essere usato percreare direttamente in XML un oggetto rappresentante undocumento XML. Quest'approccio tende ad essere moltopiù facile rispetto all'uso diXmlNew()
se la struttura XML non vienedeterminata programmaticamente. L'esempio seguente mostracome usare <cfxml>
.
Es.3: cfxml.cfm
<cfxml variable="docGeorge"> <?xml version="1.0" encoding="iso-8859-1"?> <Name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Name.xsd" Title="President"> <FirstName>George</FirstName> <LastName>Washington</LastName> </Name> </cfxml> <!--- Converte il documento XML in una stringa ---> <cfset xmlString = ToString(docGeorge)> <!--- Setta il contenuto a text/xml, Svuota il buffer e stampa in output la stringa XML ---> <cfcontent type="text/xml" reset="yes"><cfoutput>#xmlString#</cfoutput>
- Articolo precedente Spedire e-mail con ColdFusion
- Articolo successivo XML e ColdFusion : XmlTransform()