2012-07-12 81 views
1

我一直在試圖找出使用Coldfusion從xml文件中提取數據的最佳方法。 XML文件相對簡單,但找出這個問題。 XML數據是這樣的:在Coldfusion中解析XML的困難

<recordname> 
<biols>Perennial </biols> 
<biomd> 
common </biomd> 
<catcn>Tibetan Flora Images</catcn> 
<catot>Photo</catot> 
<darfm>Araliaceae</darfm> 
<dargn>Aralia</dargn> 
<darsn>Aralia apioides</darsn> 
<comnm>qing ye long yan du he</comnm> 
<mulmm0> 
<mulmm> 
<irn>10221626</irn> 
</mulmm> 
<mulmm> 
<irn>10221629</irn> 
</mulmm> 
<mulmm> 
<irn>10221631</irn> 
</mulmm> 
<mulmm> 
<irn>10221633</irn> 
</mulmm> 
<mulmm> 
<irn>10221636</irn> 
</mulmm> 
</mulmm0> 
</record> 

我想返回每個mulmm IRN與包含在記錄相關的父信息,這樣我就會有5條記錄與記錄irn和每條記錄中的記錄名稱信息。最好的方法是什麼?

我爲這個簡單的問題表示歉意 - 由於某種原因,這是困擾我。謝謝你的幫助!

+1

試過[XMLPARSE(http://cfdocs.org/xmlparse)和[XmlSearch(HTTP:// cfdocs。 org/xmlsearch)呢? – 2012-07-12 22:51:30

回答

2

不知道這是你想要的,但這裏是我的2美分:

<cfset myDoc ="<recordname> 
<biols>Perennial </biols> 
<biomd> 
common </biomd> 
<catcn>Tibetan Flora Images</catcn> 
<catot>Photo</catot> 
<darfm>Araliaceae</darfm> 
<dargn>Aralia</dargn> 
<darsn>Aralia apioides</darsn> 
<comnm>qing ye long yan du he</comnm> 
<mulmm0> 
<mulmm> 
<irn>10221626</irn> 
</mulmm> 
<mulmm> 
<irn>10221629</irn> 
</mulmm> 
<mulmm> 
<irn>10221631</irn> 
</mulmm> 
<mulmm> 
<irn>10221633</irn> 
</mulmm> 
<mulmm> 
<irn>10221636</irn> 
</mulmm> 
</mulmm0> 
</recordname>"> 

<cfset myXML = XMLParse(myDoc)> 

<cfset numRCItems = ArrayLen(myXML.recordname.XMLChildren)> 
<cfset numMulmmItems = ArrayLen(myXML.recordname.mulmm0.XMLChildren)> 

<cfset myQuery = QueryNew("irn, biols, biomd, catcn, catot, darfm, dargn, darsn, comnm") > 
<cfset temp = QueryAddRow(myQuery, #numMulmmItems#)> 

<cfloop index="i" from = "1" to = #numMulmmItems#> 
    <cfset temp = QuerySetCell(myQuery, "irn", #myXML.recordname.mulmm0.mulmm[i].irn.XMLText#,#i#)> 
     <cfloop index="j" from = "1" to = #numRCItems#> 
      <cfif myXML.recordname.XMLChildren[j].XMLName IS NOT "mulmm0"> 
       <cfset temp = QuerySetCell(myQuery, myXML.recordname.XMLChildren[j].XMLName, #myXML.recordname.XMLChildren[j].XMLtext#,#i#)>  
      </cfif> 
     </cfloop> 
</cfloop> 

<cfdump var="#myQuery#" >