2

ColdFusion バックエンドによって作成された XML を、JQWidgets ツリーで使用するために特別にフォーマットされた Javascript 変数に変換する必要があります ( 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 を構造体に解析し、S​​erializeJson() を使用して 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 に答える