您可以在JS对象中使用点表示法,并在键名中使用特殊字符

时间:2015-12-23 15:10:28

标签: json

我正在使用xml2js模块将xml文件解析为JS对象。 xml文档在所有节点中使用名称空间。该文件的片段如下所示:

<resource identifier="604262" type="imsqti_item_xmlv2p1" href="604262.xml">
        <metadata>
            <imsqti:qtiMetadata>
                <imsqti:timeDependent>false</imsqti:timeDependent>
                <imsqti:interactionType>choiceInteraction</imsqti:interactionType>
                <imsqti:feedbackType>none</imsqti:feedbackType>
                <imsqti:solutionAvailable>true</imsqti:solutionAvailable>
            </imsqti:qtiMetadata>
            <imsmd:lom>
                <imsmd:general>
                    <imsmd:identifier>604262</imsmd:identifier>
                    <imsmd:parentId>627617</imsmd:parentId>
                    <imsmd:classicId>16211</imsmd:classicId>
                    <imsmd:classicParentId>238933</imsmd:classicParentId>
                    <imsmd:passageId>650453</imsmd:passageId>
                    <imsmd:classicPassageId>16203</imsmd:classicPassageId>
                    <imsmd:depthOfKnowledge></imsmd:depthOfKnowledge>
                    <imsmd:bloomsLevel></imsmd:bloomsLevel>
                    <imsmd:omit>false</imsmd:omit>
                    <imsmd:replaceWith></imsmd:replaceWith>
                    <imsmd:allowCalculator>0</imsmd:allowCalculator>
                    <imsmd:allowGrammarTools>0</imsmd:allowGrammarTools>
                    <imsmd:displayFormatId></imsmd:displayFormatId>
                    <imsmd:forceFullPage>0</imsmd:forceFullPage>
                    <imsmd:itemTypeId>3</imsmd:itemTypeId>
                    <imsmd:mediaTypeId>1</imsmd:mediaTypeId>
                    <imsmd:consortiumId>1</imsmd:consortiumId>
                    <imsmd:useTwoPointScoring></imsmd:useTwoPointScoring>
                    <imsmd:parccTwoPointScoring></imsmd:parccTwoPointScoring>
                </imsmd:general>

当它被转换为JSON时,我的对象键为&#34; imsmd:lom&#34;和&#34; imsmd:general&#34;所以当我尝试使用点表示法访问对象的部分时,例如result.imsmd:lom.imsmd:general我得到一个错误,说明冒号所在的意外标记。

我已经使用了xml2js解析器的stripPrefix方法,但它没有删除这些前缀。是否有另一种方法来删除前缀或是否有不同的方法来遍历JS对象以避免错误?

1 个答案:

答案 0 :(得分:0)

object["property"]

的语法糖
object.imsmd:lom

因此,由于object["imsmd:lom"]不是有效的标识符,因此您必须使用foo()