2013-05-25 73 views
0

我有一個這樣的XML:JavaScript:JXON轉換,是否有「@」的原因?

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

,我通過的MDN JXON片段轉換爲JSON 3. https://developer.mozilla.org/en-US/docs/JXON#Algorithm_.233.3A_a_synthetic_technique

結果是:

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

這是因爲JXON片段3是否這樣做:

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

有沒有理由在這裏使用「@」?對我來說,它沒有任何意義,因爲我不能做

[email protected] 

回答

4

是的,有一個原因,並且這個原因是間接來自XPath的(當涉及到以編程方式瀏覽XML文檔時的標準)。屬性通常被稱爲@attribute,以將它們與內容或子標記區分開來,以便能夠進行雙向操作(如果您沒有它們,由於含糊不清,從JSON切換回XML將是不可能的)。

在編程方面,比[email protected]更喜歡做calendar.month["@year"]。它還會讓優化者明白名稱是字面的,這也是間接的好處。

+0

這很合理,謝謝! – user2420172

0

但是你可以做month['@year']

的原因是,這是tag attributes,這在JSON沒有等價。

+0

'month ['@ year']'也不起作用,從它的外觀來看, 'month'是一個數組。 'month [0] ['@ year']'應該可以工作。 – cHao

+0

恩,是的,我只是在語法上發言 – Ven

相關問題