2010-08-26 12 views
0

J'ai besoin d'analyser xml pour un projet d'applescript et j'ai eu un début mais pour une raison quelconque mon code ne fonctionne pas comme je l'attendais, il trouve l'objet que je cherche mais ne retourne pas une valeuranalyser xml avec applescript ou peut-être shell

est ici le code

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 

ici est ce xml

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

est intéressant si je lui donne un élément de haut niveau comme il le fait ce que j'attends à

alors je suis jsut soit en cherchant à réparer ce code ou faire quelque chose de mieux peut-être quelque chose du shell que je peux appeler pour analyser mon xml?

grâce

+1

FYI: J'ai répondu à votre message sur le site Web de MacScripter: http://macscripter.net/viewtopic.php?id=33978 – regulus6633

+0

@ regulus6633 vous devriez le poster ici aussi je peux donner crédit – mcgrailm

Répondre

3

Lorsque vous RECURSE à travers les nœuds XML, vous ne retournez pas la valeur vers le haut par les retours de getXML().

Proposer quelque chose comme remplaçant la ligne getXML():

my getxml(XML element i of xmldata, e) 

avec:

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

travaillé pour moi.