2010-08-29 13 views
5

Bu yapıyı nasıl ayrıştırırım? Bunu tek değişkenlere dönüştürmem gerekiyor. Örneğin. öznitelikler struct:CFDUMP yapısını ayrıştırma ve değerleri kaydetme

name 

type 

value 

Yapılara aşina değilim ve bu veri türünü bir veritabanına girmem gerekiyor.

cfloop ile oynamıştım ama hiçbir şey yok. sadece bu yapıyı dökümü istiyorsanız

cfdump

+0

Bu verilerin bir veritabanında nasıl saklanmasını istiyorsunuz? Örneğin. Amaç ne. –

cevap

6

sizin değişken adı varsayarsak "foo" dir, bu

foo.attributes.name 

Yapıları gibi adını erişebilir sadece nokta gösterimde aracılığıyla erişilir.

1

, basit bir XML kullanmak ve bir CLOB veya BLOB alanda saklayın. Ancak arama gibi işlemleri yapmak, verilere sık sık değişiklik yapmak istiyorsanız ağaç yapılarını daha iyi görürsünüz.

Oracle kullanıyorsanız, CONNECT BY PRIOR,'a bakın. Bu, veritabanındaki değerleri doğrudan satırlar olarak depolamanızı ve daha sonra bunları sorgulamanızı ve bir ağaç yapısına yüklemenizi sağlar.

Buradaki veriler, hem basit bir TREE veri yapısıyla uğraşıyormuşsunuz gibi, verileri saklayabilmeniz ve alabilmeniz gerektiğidir.

+0

de her alan bir değişken olarak almak için bir yol var mı ??? Gördüğünüz gibi bir girişi ayrıştıran bir fonksiyon kullanıyorum, şimdi sadece sonuçlara ihtiyacım var, böylece onlarla çalışabilirim. bu işlev http://www.bennadel.com/blog/779-Parsing-HTML-TagALAR-Into-A-ColdFusion-Structure.htm adresinde bulunur. – loo

0

Ben'in söylediği gibi aynı satırlar boyunca, neden bu güzel yapıyı neden ayırmak istediğinizden emin değilim. İçinde bulunan değerlere erişerek onu mevcut haliyle kullanın.

<cfloop collection="#foo.attributes#" item="myKey"> 
    <cfoutput>Value of #myKey# is #structFind(foo.attributes, myKey)#</cfoutput> 
</cfloop> 

Daha fazla ayrıntı için LiveDocs' structure looping page'a başvurun.

İlgili konular