2016-04-20 2 views
0

Я работаю над файлом xml, используя coldfusion. Мне нужно подсчитать количество появления определенного сегмента. например, я хочу знать, сколько сегментов «пользователь» присутствует в файле.xml файл в coldfusion

первую очередь я разобран файл:

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

то я должен сделать определенный процесс на каждом вхождение сегмента

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

Может кто-нибудь знает, как мы можем получить число появление сегмента (Nboccurence)?

Благодаря

+1

В зависимости от схемы вашего файла XML, это может быть случай получения arrayLen (myParsedFile.xmlRoot.xmlChildren) , или вам, возможно, придется выполнить xmlSearch и получить arrayLen() этого ... –

+1

Опубликовать образец, и это будет простой вопрос. Если у вас есть узел с несколькими «пользовательскими» узлами под ним, вам нужно всего лишь изучить Arraylen (nodeWithUserInIt). Приведенный ниже пример @leigh дает вам возможность установить этот узел для проверяемой переменной, но если ваш xml уже находится в объекте, вам может и не понадобиться это делать. Дамп файла (с помощью cfdump), а затем выяснить синтаксис. –

+0

(Редактировать, опубликовано слишком рано) Согласовано. Это зависит от фактического xml. Обратите внимание, что вы получите более быстрые и более точные ответы, если вы включите всю необходимую информацию в вопрос, в этом случае образец xml, предложенный Марком :) См. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – Leigh

ответ

3

Начните с чтения документации на xmlSearch. Если вы передаете XML-документ и путь к элементам, которые хотите найти, он возвращает массив совпадающих узлов.

<cfset results = XmlSearch(yourXMLObject, "/path/to/user")> 
<cfoutput>Nodes found = #arrayLen(results)#</cfoutput> 

Используйте ArrayLen для возвращаемого массива, чтобы получить количество найденных узлов. Хотя, если вам просто нужно перебирать элементы, вы можете использовать цикл массива вместо:

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

Спасибо большое Ли! Замечательно!! – user3569267

Смежные вопросы