Applescript读取XML中的特定值

时间:2014-01-28 02:03:47

标签: xml xml-parsing applescript

我正在尝试使用AppleScript读取XML。

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xml:space="preserve" xmlns="http://ns.adobe.com/xfdf/">
<annots>
<square            color="#FF0000" creationdate="D:20130828114843+05'30'"            date="D:20130828114901+05'30'" flags="print"            name="Xi6cOkAWgWHcAhpfBkR5A7" page="0"            rect="347.7599999991828,1041.8400000004283,453.5999999989341,1056.9600000003927"            subject="Rectangle"                title="1 im, awltest7 (AWLTEST7.IM)">
<contents-richtext>
<body>
<p>Text Not Clear</p>
</body>
</contents-richtext>
<popup                open="yes" page="0"            rect="453.5999999989341,944.4600000003926,573.5999999989341,1056.9600000003927"/>
</square>
<square            color="#FF0000" creationdate="D:20130828114910+05'30'"            date="D:20130828114919+05'30'" flags="print"            name="ptmmBKtfoDEbVzirMgZLnY" page="0"            rect="511.1999999987987,1092.960000000308,550.7999999987057,1123.9200000002352"            subject="Rectangle"                title="2 im, awltest7 (AWLTEST7.IM)">
<contents-richtext>
<body>
<p>Incorrect dimension</p>
</body>
</contents-richtext>
<popup                open="yes" page="0"            rect="550.7999999987057,1011.4200000002352,670.7999999987056,1123.9200000002352"/>
</square>
<square            color="#FF0000" creationdate="D:20130828114956+05'30'"            date="D:20130828115004+05'30'" flags="print"            name="8LaAl2Upx4LEaQptQKXoZx" page="0"            rect="355.67999999916424,731.5200000011573,431.99999999898483,750.2400000011135"            subject="Rectangle"                title="3 im, awltest7 (AWLTEST7.IM)">
<contents-richtext>
<body>
<p>Incorrect Text</p>
</body>
</contents-richtext>
<popup                open="yes" page="0" rect="431.99999999898483,637.7400000011133,551.9999999989849,750.2400000011135"/>
</square>
</annots>
</xfdf>

的AppleScript

set theXMLFile to ((choose file) as string)
tell application "System Events"
    set theXMLFile to XML file theXMLFile
    set squares to XML elements of XML element "annots" of XML element "xfdf" of theXMLFile whose name is "square"
    set p to {}
    set attrs to {}
    repeat with i from 1 to (count squares)
        set end of p to value of XML element "p" of XML element "body" of XML element "contents-richtext" of item i of squares
        set end of attrs to value of XML attributes of XML element "popup" of item i of squares
    end repeat
end tell

通过使用我设法获得'&lt;的脚本p&gt;''&lt;弹出&gt;'值。如何获得'&lt; square&gt;'值。请指教。

1 个答案:

答案 0 :(得分:1)

下面的脚本工作。

tell application "System Events"
        set theXMLFile to XML file theXMLFile
        set squares to XML elements of XML element "annots" of XML element "xfdf" of theXMLFile whose name is "square"
        set p to {}
        set attrs to {}
        repeat with i from 1 to (count squares)
            set end of p to value of XML element "p" of XML element "body" of XML element "contents-richtext" of item i of squares
            set end of attrs to value of XML attributes of item i of squares
        end repeat
    end tell