ColdFusion XML to Javascript variable

ColdFusion XML to Javascript variable

本文关键字:variable Javascript to XML ColdFusion      更新时间:2023-09-26

我需要将ColdFusion后端创建的XML转换为一个特定格式的Javascript变量,以便在JQWidgets树中使用(请参阅http://www.jqwidgets.com/community/topic/xml-tree-with-empty-nodes/#post-7215用于背景信息)。

迭代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" }
];

如果您不想重新发明轮子,可以使用Xml2Struct项目将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的好示例。