2016-04-20 6 views
0

Ich arbeite an einer XML-Datei mit Coldfusion. Ich muss die Anzahl des Auftretens eines bestimmten Segments zählen. Zum Beispiel möchte ich wissen, wie viele Segmente 'Benutzer' in der Datei vorhanden sind.XML-Datei in Coldfusion

zunächst einmal analysiert ich die Datei:

<cfset myParsedFile = XmlParse("#LocalPath#/#FileName#")> 

dann muss ich auf jedem Vorkommen des Segments wissen

<cfloop index = 'i' from = '1' to = '#Nboccurence#'> 

Kann jemand einen bestimmten Prozess tun, wie können wir die Anzahl der erhalten Auftreten eines Segments (N-Vorkommen)?

Dank

+1

auf dem Schema der XML-Datei, kann es je einen Fall des Erhaltens der ArrayLen (myParsedFile.xmlRoot.xmlChildren) sein , oder Sie müssen möglicherweise eine xmlSearch durchführen und die arrayLen() davon bekommen ... –

+1

Posten Sie ein Beispiel und das wäre eine einfache Frage. Wenn Sie einen Knoten mit mehreren "user" -Knoten darunter haben, müssen Sie nur Arraylen (nodeWithUserInIt) untersuchen. @leighs Beispiel unten gibt Ihnen eine Möglichkeit, diesen Knoten auf eine Variable zu untersuchen, aber wenn Ihre XML bereits in einem Objekt ist, müssen Sie dies möglicherweise nicht tun. Dump die Datei (mit cfdump) und dann herausfinden, die Syntax. –

+0

(Bearbeiten, zu früh gepostet) Einverstanden. Es hängt von der tatsächlichen XML ab. Beachten Sie, dass Sie schnellere und genauere Antworten erhalten, wenn Sie alle erforderlichen Informationen in die Frage aufnehmen, in diesem Fall ein Beispiel für das XML, wie es Mark vorgeschlagen hat. Siehe [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve) – Leigh

Antwort

3

Beginnen Sie mit der Dokumentation auf xmlSearch lesen. Wenn Sie ein XML-Dokument und den Pfad der Elemente übergeben, die Sie suchen möchten, wird ein Array mit übereinstimmenden Knoten zurückgegeben.

Verwenden Sie ArrayLen für das zurückgegebene Array, um die Anzahl der gefundenen Knoten zu ermitteln. Obwohl, wenn Sie einfach durch die Elemente müssen durchlaufen, können Sie ein Array-Schleife statt:

<cfloop array="#results#" index="node"> 
    ... do something with the current node 
</cfloop> 
+0

Vielen Dank Leigh !! Wunderbar !! – user3569267