2012-08-28 84 views
2

我需要我們的ColdFusion後端創建的XML轉換成在JQWidgets樹使用特定格式的Javascript變量(見http://www.jqwidgets.com/community/topic/xml-tree-with-empty-nodes/#post-7215背景信息)。ColdFusion的XML爲Javascript變量

什麼是通過XML進行迭代,並適當地創建JavaScript的最簡單的方法?由於XML的複雜性,我認爲ColdFusion ToScript不會起作用,但我更願意使用它。

示例XML數據:

<Role> 
     <RoleID>16</RoleID> 
     <RoleName>Role C</RoleName> 
     <Certifications> 
      <Certification> 
       <CertificationID>45</CertificationID> 
       <CertificationName>Certification 2</CertificationName> 
       <Requirements> 
        <Requirement> 
         <RequirementID>678</RequirementID> 
         <RequirementName>Requirement A</Requirement> 
        </Requirement> 
       </Requirements> 
      </Certification> 
     </Certifications> 
    </Role> 
    <Role> 
     <RoleID>16</RoleID> 
     <RoleName>Role D</RoleName> 
     <Certifications> 
      <Certification> 
       <CertificationID/> 
       <CertificationName/> 
      </Certification> 
     </Certifications> 
    </Role> 
</Roles> 

實例JavaScript變量:

var source = [ 
    { label: "Role C", expanded: true, items: [ 
     { label: "Certification 2", items: [ 
      { label: "Requirement A" } 
     ]}, 
    ]}, 
    { icon: "", label: "Role D" } 
]; 
+2

讀取xml到XML變量,然後橫向於對象,並創建鏡像CF struct和serializeJSON()的結構,以獲得JSON字符串。讓source =那個json字符串。請參閱:http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec133ba-7fd9.html#WS95DFBAE4-DB38-46db-8F18-49154C7088FD – Henry

+0

@Henry - 我有XML變量,我想我有CF結構 - 或者至少我知道如何得到它。從那裏,我不明白如何創建JSON對象有所幫助。我沒有使用過JSON。也還是有轉換成JSON所需的特定格式,這是我想到的問題只是讓我回來,我是開始 - 我仍然需要循環的數據不知何故,維護父/子關係。 – shimmoril

+0

「示例JavaScript變量」有使用JSON - 一旦你在CF中的數據,你只是做'VAR源= #serializeJson(數據)#'。這只是將XML轉換爲CFML。亨利提供的鏈接爲此提供了一個開始,因此請繼續努力,如果最終出現問題,請回復並更新問題以及您嘗試過的方式和卡住的位置。 –

回答

2

如果你不想推倒重來,你可以使用Xml2Struct project解析XML到一個結構中,然後使用SerializeJson()來獲得一個Javascript對象。

例子:

<cfsavecontent variable="myXml"> 
<Roles> 
    <Role> 
     <RoleID>16</RoleID> 
     <RoleName>Role C</RoleName> 
     <Certifications> 
      <Certification> 
       <CertificationID>45</CertificationID> 
       <CertificationName>Certification 2</CertificationName> 
       <Requirements> 
        <Requirement> 
         <RequirementID>678</RequirementID> 
         <RequirementName>Requirement A</RequirementName> 
        </Requirement> 
       </Requirements> 
      </Certification> 
     </Certifications> 
    </Role> 
    <Role> 
     <RoleID>16</RoleID> 
     <RoleName>Role D</RoleName> 
     <Certifications> 
      <Certification> 
       <CertificationID/> 
       <CertificationName/> 
      </Certification> 
     </Certifications> 
    </Role> 
</Roles> 
</cfsavecontent> 

<cfinvoke component="xml2Struct" method="ConvertXmlToStruct" xmlNode="#myXml#" str="#{}#" returnVariable="result"> 

<cfdump var="#serializeJson(result)#"> 

即使你不想使用項目,您可以查看如何解析XML一個很好的例子源。

+0

謝謝拉斯,我會試試看。 – shimmoril