2014-10-06 103 views
0

使用xml2js解析XML文件,我需要检索的属性包含在其名称xml2js,属性名称包含连字符

<item cdr-id="1234"> 
    <name>some text</name> 
</item> 

连字符。在这里我想点值检索cdr-id,我已经有一个变量item指向item元素。我已验证它指向正确的节点

console.log(item.name); 

并且返回期望值some text。但是,当我尝试

console.log(item.$.cdr-id); 

我得到了完全合理的误差ReferenceError: id is not defined(我一直更惊讶,如果id不是作为一个单独的令牌处理)。

同样,

console.log(item.$."cdr-id"); 

获取消息SyntaxError: Unexpected string

投掷JSON.stringify周围

console.log(JSON.stringify(item.$)); 

揭示了原来的属性名称:{"cdr-id":"CDR0000040222"}在首位的名字

由于没有连字符只是踢问题的道路一点。如果不这样做,看起来提供一个自定义属性名称处理器是要走的路,但是如果任何人必须更新此代码,那么这种“太聪明”可能会导致混淆。

有没有更好的方法来做到这一点?

回答

1

不喜欢

console.log(item.$["cdr-id"]); 
+0

这奏效了。谢谢。我真的不想重写属性名称。 – ThatBlairGuy 2014-10-06 18:05:24

+0

@ThatBlairGuy:没问题:) – mithunsatheesh 2014-10-06 18:06:47

相关问题