0 votos

Applescript: delimitación de texto en un bucle

Estoy tratando de obtener valores de un archivo de registro de toda la ocurrencia de un valor Grabado en la siguiente clave:

 > <key>MyTime</key>         <string>2019-03-29T08:48:18+0000</string>
>       <key>serviceToken</key>
 

Puedo obtener la primera aparición del valor que quiero con el siguiente código, pero ¿cómo puedo buscar más ocurrencias y agregar una variable secundaria?

 ##Getting the file name
set ShortDate to short date string of (current date)
set [dayN, MonthN, YearN] to the words of ShortDate
set myUSDate to YearN & MonthN & dayN as string
set myFileName to "TIME" & myUSDate & ".log"

set p to "/Users/kevin/Library/Logs/MyAPP/" & myFileName
set plistfile_path to POSIX file p

property leftEdge1 : "<key>myValueTime</key>"
property rightEdge1 : "<key>serviceToken</key>"
set myNewCaseNote to ""
set newFile to (plistfile_path as text)
set theSource to read file newFile as text
set theText to Unicode text
try
    set saveTID to text item delimiters
    set text item delimiters to leftEdge1
    set classValue to text item 2 of theSource
    set text item delimiters to rightEdge1
    set myCaseNote to text item 1 of classValue
    set text item delimiters to saveTID
    myCaseNote
end try
 

Pero, ¿cómo puedo obtener otra aparición de este tiempo / datos? Y no solo la primera.

1voto

red_menace Puntos 111

Un archivo XML no puede tener claves idénticas en el mismo nivel, así que voy a suponer que es un archivo de texto simple con esas entradas. Elemento de texto delimitadores puede ser usado para todo, pero tienden a añadir un poco más de código, ya que se necesita para obtener una lista de elementos con el primer delimitadores, a continuación, utilizar otros delimitadores en esos artículos, y así sucesivamente. En este caso, usted las puede utilizar para quebrantar el texto aparte en la tecla que desee, a continuación, obtener el texto de entre el primer conjunto de etiquetas mediante la obtención de sus desplazamientos, por ejemplo:

property keyValue : "<key>myValueTime</key>"
property startTag : "<string>"
property stopTag : "</string>"

set theSource to "<key>myValueTime</key>        <string>2019-03-28T08:48:18+0000</string>
<key>serviceToken</key>
<key>myValueTime</key>
  <string>2019-03-29T09:48:18+0000</string>
<key>serviceToken</key>
  <string>whatever</string>"

set saveTID to text item delimiters
set text item delimiters to keyValue
set classValues to text items of theSource
set text item delimiters to saveTID

set myCaseNotes to {}
repeat with anItem in classValues
  set here to (offset of startTag in anItem)
  set there to (offset of stopTag in anItem)
  if here is not 0 and there is not 0 then
    set the end of myCaseNotes to text (here + (count startTag)) thru (there - 1) of anItem
  end if
end repeat

return myCaseNotes

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X