2

我需要将我们的 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" }
];
4

1 回答 1

2

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

于 2012-08-29T03:47:59.933 回答