property list editor

I want to extract some data from a plist. It is actually Butler’s configuration plist.
I am using property list tools.osax
When I use:

I can see the data in the results window like

Character|:“.”, |Code|:47, |Key|:“.”, |Modifiers|:256}, {|Character|:“v”, |Code|:9, |Key|:“V”, |Modifiers|:256}, {|Character|:“e”, |Code|:14, |Key|:“E”, |Modifiers|:256}, {|Character|:“r”, |Code|:15, |Key|:“R”, |Modifiers|:256}, {|Character|:“i”, |Code|:34, |Key|:“I”, |Modifiers|:256}, {|Character|:“z”, |Code|:6, |Key|:“Z”, |Modifiers|:256}, {|Character|:“o”, |Code|:31, |Key|:“O”, |Modifiers|:256}, {|Character|:“n”, |Code|:45, |Key|:“N”, |Modifiers|:256}, {|

But how I am I supposed to work with it. Let us say I want a list of all the |Code| the |Key| succeeding that code. Even set x to x as text does not work.

That looks like it is a list of records. Records look like {label1:value1, label2:value2, .}. If you have such a record in a variable named aRec, you can access the value associated with label1 by using code like label1 of aRec. The labels are just normal identifiers.

The vertical bars are just there because the identifiers in your records use uppercase letters. Internally, AppleScript identifiers that do not employ the vertical bars are case-preserving (actually all case variations are converted to the first one seen by the current AppleScript environment) but they are actually treated as all lowercase. So, to faithfully preserve the uppercase letters read from the plist file, identifiers with vertical bars are used. The vertical bars can also be used to incorporate extra characters that are not allowed in “bare” identifiers.

set listOfRecords to {{|Character|:".", |Code|:47, |Key|:".", |Modifiers|:256}, {|Character|:"v", |Code|:9, |Key|:"V", |Modifiers|:256}, {|Character|:"e", |Code|:14, |Key|:"E", |Modifiers|:256}, {|Character|:"r", |Code|:15, |Key|:"R", |Modifiers|:256}, {|Character|:"i", |Code|:34, |Key|:"I", |Modifiers|:256}, {|Character|:"z", |Code|:6, |Key|:"Z", |Modifiers|:256}, {|Character|:"o", |Code|:31, |Key|:"O", |Modifiers|:256}, {|Character|:"n", |Code|:45, |Key|:"N", |Modifiers|:256}}
set codes to {}
set keys to {}
set codeKeys to {}
repeat with |a record| in listOfRecords
	set end of codes to |Code| of |a record|
	set end of keys to |Key| of |a record|
	set end of codeKeys to {|Code|, |Key|} of |a record|
end repeat
{codes:codes, keys:keys, codeKeys:codeKeys} --> {codes:{47, 9, 14, 15, 34, 6, 31, 45}, keys:{".", "V", "E", "R", "I", "Z", "O", "N"}, codeKeys:{{47, "."}, {9, "V"}, {14, "E"}, {15, "R"}, {34, "I"}, {6, "Z"}, {31, "O"}, {45, "N"}}}
-- This script has three distinct variables. The first three references are all to the same variable, as compilation will show you. The last two are distinct from each other and the first one(s).
SomeVariablE   --> compiles to SomeVariablE (1st use of somevariable)
SOMEVARIABLE   --> compiles to SomeVariablE (copies first use)
|somevariable| --> compiles to SomeVariablE (copies first use)
|SOMEVARIABLE| --> compiles to |SOMEVARIABLE|
|SomeVariablE| --> compiles to |SomeVariablE| 

Vow!! Thanks for the explanation.
(you are right, the vertical bars puzzled me)