Parsen von XML mit Coldfusion

Das Parsen von XML ist eine häufig wiederkehrende Aufgabe bei der Umsetzung von zahlreichen Projekten.
Beim Parsen von XML mit Coldfusion muss man ein paar Dinge beachten, in diesem Artikel zeige ich auf, wie das auch wirklich klappt.

Ein grosser Fallstrick ist das Namespace-Attribut bei RSS-Feeds, also beispielsweise:

xmlns:content="http://www.domain.de"

Diese xmlsns-Attribute müsst Ihr vor dem Parsen wahrscheinlich erstmal mit der Replace()-Funktion entfernen.

Dann könnt Ihr zum eigentlichen Parsen übergehen, ich würde diesen Weg empfehlen, um Umlautprobleme komplett auszuschliessen:

<cfhttp timeout="5" url="#url2get#" method="get" charset="#myEncoding#" /><!--- binaertring oder "normaler" rss-feed? --->

<cfif cfhttp.filecontent.getClass() IS "class java.io.ByteArrayOutputStream">

<cfset sTMPRSSFILE = cfhttp.filecontent.toString("#myEncoding#") />

<cfelse>

<cfset sTMPRSSFILE = cfhttp.filecontent />

</cfif>

Danach könnt Ihr mit Hilfe der Funktion XMLParse() das XML parsen und Euch die gewünschten Elemente suchen, zum Beispiel:

<cfscript>
myXMLDoc = XMLParse(sTMPRSSFILE);
myItems = XmlSearch(myXMLDoc, „/article/channel“);
</cfscript>

Nun loopt Ihr über die myItems, um an alle Unterelemente zu kommen:

<cfloop from="1" to="#ArrayLen(myItems)#" index="ItemsIdx">

<cfscript>
sBlogDescription = myItems[ItemsIdx].title.xmltext;
</cfscript>

</cfloop>

Ein guter Tipp: gebt Euch vor dem Loopen mit

<cfdump var="#myXMLDoc#">

den Inhalt der Variable aus, das erleichtert vieles.

Schreibe einen Kommentar