2012-07-12 79 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#" >