2010-12-15 99 views
0

我想提取所有名稱爲「人」的節點(父母/子女)使用ColdFusion,使屬性「圖像1」的值作爲NULL查找使用ColdFusion

<person image1="img1.jpg" image2="img2.jpg"> 
    <person image1="img3.jpg" image2="img4.jpg" /> 
    <person image1="img5.jpg" image2="img6.jpg" /> 
</person> 

回答

3
所有的XML節點

這裏是一個解決方案,你(編輯)的問題,使用遞歸:

<cfset s = '<person image1="img1.jpg" image2="img2.jpg"> 
    <person image1="img3.jpg" image2="img4.jpg" /> 
    <person image1="img5.jpg" image2="img6.jpg" /> 
</person>' /> 

<cfset doc = xmlParse(s) /> 

<cfdump var="#doc#" label="before" /> 

<cfset myFunction(doc.xmlRoot) /> 

<cfdump var="#doc#" label="after" /> 

<!--- Function ---> 
<cffunction name="myFunction" output="true"> 
    <cfargument name="doc" type="xml" /> 

    <cfif ARGUMENTS.doc.xmlName eq "person"> 

     <cfloop collection="#ARGUMENTS.doc.xmlAttributes#" item="LOCAL.k"> 
      <p>#ARGUMENTS.doc.xmlAttributes[LOCAL.k]# set to null</p> 
      <cfset ARGUMENTS.doc.xmlAttributes[LOCAL.k] = "null" /> 
     </cfloop> 

    </cfif> 

    <!--- Recursively call for children ---> 
    <cfloop array="#ARGUMENTS.doc.xmlChildren#" index="LOCAL.childElem"> 
     <cfset myFunction(LOCAL.childElem) /> 
    </cfloop> 

</cffunction> 

希望幫助!

+0

+1,如果只是因爲我太懶了,現在要改變我的答案。 – orangepips 2010-12-15 14:00:55

1
<cfscript> 
doc = xmlparse(/*xml from above*/); 
selectedElements = xmlsearch(doc, "//language"); 

for (i=1; i LTE ArrayLen(selectedElements); i = i + 1) { 
    // do what you want with the nodes here 
} 
</cfscript> 
+0

嗨,感謝您的回答,我修改了我的問題...請檢查問題 – kayteen 2010-12-15 12:35:24