0

我有一个这样的 XML:

<calendar>
    <month year="2013" num="5">
        <day num="1">
    </month>
</calendar>

我通过 MDN JXON Snippet 3 转换为 JSON。https://developer.mozilla.org/en-US/docs/JXON#Algorithm_.233.3A_a_synthetic_technique

结果是:

{"calendar":{
    "month":[{
        "@year":2013,"@num":5,"day":{
            "@num":1
            }
        }
    }]
}

发生这种情况是因为 JXON Snippet 3 这样做:

vResult["@" + oAttrib.name.toLowerCase()] = parseText(oAttrib.value.trim());

有什么理由在这里使用“@”吗?对我来说这没有意义,因为我做不到

calendar.month.@year
4

1 回答 1

4

是的,有一个原因,而这个原因间接来自 XPath(当涉及到以编程方式导航 XML 文档时的标准)。属性通常被称为@attribute将它们与内容或子标签区分开来,以便能够进行双向操作(如果没有它们,由于歧义,从 JSON 回到 XML 是不可能的)。

在编程方面,更喜欢做calendar.month["@year"]over calendar.month.@year. 它还具有使优化器了解名称是字面意思的间接好处。

于 2013-05-25T12:41:50.747 回答