2010-08-26 80 views
0

我需要爲一個applescript項目解析xml,並且我得到了一個開始,但由於某種原因,我的代碼沒有以我期望的方式運行它找到了我正在尋找的項目沒有返回值用蘋果腳本或可能shell解析xml

這裏是代碼

set xmlFile to ((choose file without invisibles) as string) 
tell application "System Events" 
    set xdata to XML element 1 of contents of XML file xmlFile 
    set foo to my getxml(xdata, "line1") 
    return foo 
end tell 

on getxml(xmldata, e) 
    tell application "System Events" 
     repeat with i from 1 to count of XML elements of xmldata 
      set e_name to (get name of XML element i of xmldata) as Unicode text 
      log e_name 
      if e_name is equal to e then 
       display dialog "hello" 
       return value of XML element i of xmldata 
      else 
       my getxml(XML element i of xmldata, e) 
      end if 
     end repeat 
    end tell 
end getxml 

這裏是XML

<?xml version="1.0" encoding="UTF-8"?> 
<foo> 
    <bar> 
     <line1>test</line1> 
    </bar> 
    <crap>ohh</crap> 
</foo> 

有趣的是,如果我給它一個頂級項目像它做什麼,我希望它到

所以我只是要麼修復這段代碼,要麼做一些更好的東西,也許我可以調用來解析我的xml的shell?

感謝

+1

僅供參考:我在MacScripter的網站上回復了您的帖子:http://macscripter.net/viewtopic.php?id=33978 – regulus6633 2010-08-27 14:21:30

+0

@ regulus6633您應該在此發帖,以便我可以提供信用 – mcgrailm 2010-08-27 20:21:47

回答

3

當您通過XML節點遞歸,你不是透過的getXML回報返回值備份()。

建議是這樣更換線的getXML():

my getxml(XML element i of xmldata, e) 

有:

set foo to my getxml(XML element i of xmldata, e) 
return foo 

爲我工作。