我無法將子元素添加到<result>
標記。使用Google App腳本解析多級XML XmlService
代碼:
var xml = '\
<document>\
<currentTime>2013-09-05 09:47:06</currentTime>\
<result>\
<one>2013-09-05 09:47:06</one>\
<two>2013-09-20 14:30:13</two>\
<three>2013-09-02 14:12:22</three>\
<four>2505</four>\
</result>\
<cachedUntil>2013-09-05 10:28:40</cachedUntil>\
</document>';
var document = XmlService.parse(xml);
var entries = document.getRootElement().getChildren();
Logger.log(entries.length);
for (var i = 0; i < entries.length; i++) {
Logger.log("%s -> %s",entries[i].getName(),entries[i].getText());
}
運行這段代碼返回如我所料的記錄如下:
[13-09-05 13:54:18:815 EAT] 3.0
[13-09-05 13:54:18:815 EAT] currentTime -> 2013-09-05 09:47:06
[13-09-05 13:54:18:816 EAT] result ->
[13-09-05 13:54:18:816 EAT] cachedUntil -> 2013-09-05 10:28:40
我得到三個元素,我能夠運行getName()
和getText()
方法正好。但是,如果我在定義條目後立即讓<result>
這樣的特定元素的子元素與行var results = entries.getChildren();
一起獲得運行時錯誤「TypeError:Can not find function getChildren in object [Element:]」。什麼deuce?
我不明白這裏發生了什麼(顯然)。 getRootElement()
返回一個Element類型。 getChildren()
返回元素數組。 entries
在哪裏變成不是元素的東西,有沒有更好的方法來解析這個文件?我覺得我在這裏錯過了一些非常愚蠢的東西。
謝謝你的時間。花了一段時間才弄清楚我在做什麼錯了。 getChildren返回和元素的ARRAY。即使單個元素仍然是1的數組。如果我已經用'var results = entries [0] .getChildren();替換了'var results = entries.getChildren();''我得到了我期待的行爲。 – mcenhillk
很酷。請將此問題標記爲已接受/已關閉,以便這對其他人有用。 –