Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
4ad03aa6
Commit
4ad03aa6
authored
Apr 04, 2001
by
Jim Fulton
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
This one was redundant.
parent
1392c45f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
318 deletions
+0
-318
lib/python/ExportImportXML.py
lib/python/ExportImportXML.py
+0
-318
No files found.
lib/python/ExportImportXML.py
deleted
100644 → 0
View file @
1392c45f
import
string
,
struct
,
sys
,
tempfile
import
Shared.DC.xml.ppml
import
Shared.DC.xml.xyap
ppml
=
Shared
.
DC
.
xml
.
ppml
xyap
=
Shared
.
DC
.
xml
.
xyap
xyap
=
xyap
.
xyap
p64
=
ppml
.
p64
u64
=
ppml
.
u64
cp
=
ppml
.
cp
try
:
from
cStringIO
import
StringIO
except
:
from
StringIO
import
StringIO
export_end_marker
=
'
\
377
'
*
16
StringType
=
type
(
''
)
class
ZopeData
:
def
__init__
(
self
,
parser
,
tag
,
attrs
):
self
.
_pos
=
0
self
.
file
=
parser
.
file
self
.
tempfile
=
parser
.
tempfile
def
append
(
self
,
transaction
,
f
=
None
):
file
=
self
.
file
write
=
file
.
write
tfile
=
self
.
tempfile
dlen
=
tfile
.
tell
()
tfile
.
seek
(
0
)
id
=
transaction
.
serial
user
,
desc
,
ext
=
transaction
.
_ude
transaction
.
_ude
=
None
tlen
=
transaction
.
_thl
pos
=
self
.
_pos
file
.
seek
(
pos
)
tl
=
tlen
+
dlen
stl
=
p64
(
tl
)
write
(
struct
.
pack
(
">8s"
"8s"
"c"
"H"
"H"
"H"
,
id
,
stl
,
' '
,
len
(
user
),
len
(
desc
),
len
(
ext
),
))
if
user
:
write
(
user
)
if
desc
:
write
(
desc
)
if
ext
:
write
(
ext
)
cp
(
tfile
,
file
,
dlen
)
write
(
stl
)
self
.
_pos
=
pos
+
tl
+
8
class
Transaction
:
def
__init__
(
self
,
parser
,
tag
,
attrs
):
self
.
file
=
parser
.
file
self
.
tempfile
=
parser
.
tempfile
self
.
tempfile
.
seek
(
0
)
tyme
=
attrs
[
'time'
]
start
=
0
stop
=
string
.
find
(
tyme
[
start
:],
'-'
)
+
start
year
=
string
.
atoi
(
tyme
[
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
tyme
[
start
:],
'-'
)
+
start
month
=
string
.
atoi
(
tyme
[
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
tyme
[
start
:],
' '
)
+
start
day
=
string
.
atoi
(
tyme
[
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
tyme
[
start
:],
':'
)
+
start
hour
=
string
.
atoi
(
tyme
[
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
tyme
[
start
:],
':'
)
+
start
minute
=
string
.
atoi
(
tyme
[
start
:
stop
])
start
=
stop
+
1
second
=
string
.
atof
(
tyme
[
start
:])
t
=
(((((
year
-
1900
)
*
12
+
month
-
1
)
*
31
+
day
-
1
)
*
24
+
hour
)
*
60
+
minute
)
t
=
struct
.
pack
(
">If"
,
t
,
second
*
(
1L
<<
32
)
/
60
)
self
.
serial
=
t
self
.
_user
=
user
=
''
self
.
_descr
=
desc
=
''
self
.
_ext
=
ext
=
''
self
.
_thl
=
23
+
len
(
user
)
+
len
(
desc
)
+
len
(
ext
)
self
.
_ude
=
user
,
desc
,
ext
self
.
_index
=
{}
self
.
_tindex
=
[]
self
.
_pos
=
0
self
.
_oid
=
'
\
0
\
0
\
0
\
0
\
0
\
0
\
0
\
0
'
def
append
(
self
,
data
):
version
=
''
old
=
self
.
_index
.
get
(
self
.
_oid
,
0
)
pnv
=
None
if
old
:
file
=
self
.
file
file
.
seek
(
old
)
read
=
file
.
read
h
=
read
(
42
)
doid
,
oserial
,
sprev
,
stloc
,
vlen
,
splen
=
unpack
(
">8s8s8s8sH8s"
,
h
)
if
doid
!=
self
.
serial
:
raise
CorruptedDataError
,
h
tfile
=
self
.
tempfile
write
=
tfile
.
write
pos
=
self
.
_pos
serial
=
self
.
serial
oid
=
self
.
_oid
here
=
tfile
.
tell
()
+
pos
+
self
.
_thl
self
.
_tindex
.
append
((
self
.
_oid
,
here
))
serial
=
self
.
serial
write
(
struct
.
pack
(
">8s8s8s8sH8s"
,
oid
,
serial
,
p64
(
old
),
p64
(
pos
),
len
(
version
),
p64
(
len
(
data
))))
for
x
in
data
[
2
:]:
write
(
x
)
return
serial
def
save_user
(
self
,
tag
,
data
):
transaction
=
self
.
_transaction
if
len
(
data
)
>
2
:
v
=
data
[
2
]
else
:
v
=
''
self
.
_user
=
v
transaction
.
_thl
=
self
.
_transaction
.
_thl
+
len
(
v
)
transaction
.
_ude
=
v
,
transaction
.
_ude
[
1
],
transaction
.
_ude
[
2
]
return
v
def
save_description
(
self
,
tag
,
data
):
transaction
=
self
.
_transaction
if
len
(
data
)
>
2
:
v
=
data
[
2
]
else
:
v
=
''
a
=
data
[
1
]
if
a
.
has_key
(
'encoding'
):
encoding
=
a
[
'encoding'
]
else
:
encoding
=
''
if
encoding
:
v
=
unconvert
(
encoding
,
v
)
transaction
.
_descr
=
v
transaction
.
_thl
=
transaction
.
_thl
+
len
(
v
)
transaction
.
_ude
=
transaction
.
_ude
[
0
],
v
,
transaction
.
_ude
[
2
]
return
v
def
save_rec
(
self
,
tag
,
data
):
a
=
data
[
1
]
if
a
.
has_key
(
'id'
):
a
[
'id'
]
=
p64
(
string
.
atoi
(
a
[
'id'
])
+
1
)
if
a
.
has_key
(
'time'
):
start
=
0
stop
=
string
.
find
(
a
[
'time'
][
start
:],
'-'
)
+
start
year
=
string
.
atoi
(
a
[
'time'
][
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
a
[
'time'
][
start
:],
'-'
)
+
start
month
=
string
.
atoi
(
a
[
'time'
][
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
a
[
'time'
][
start
:],
' '
)
+
start
day
=
string
.
atoi
(
a
[
'time'
][
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
a
[
'time'
][
start
:],
':'
)
+
start
hour
=
string
.
atoi
(
a
[
'time'
][
start
:
stop
])
start
=
stop
+
1
stop
=
string
.
find
(
a
[
'time'
][
start
:],
':'
)
+
start
minute
=
string
.
atoi
(
a
[
'time'
][
start
:
stop
])
start
=
stop
+
1
second
=
string
.
atof
(
a
[
'time'
][
start
:])
a
[
'time'
]
=
struct
.
pack
(
">If"
,(((((
year
-
1900
)
*
12
)
+
month
-
1
)
*
31
+
day
-
1
)
*
24
+
hour
)
*
60
+
minute
,
second
*
(
1L
<<
32
)
/
60
)
data
[
1
]
=
a
return
data
def
start_transaction
(
self
,
tag
,
attrs
):
self
.
_transaction
=
Transaction
(
self
,
tag
,
attrs
)
return
self
.
_transaction
def
start_ZopeData
(
self
,
tag
,
attrs
):
self
.
_ZopeData
=
ZopeData
(
self
,
tag
,
attrs
)
return
self
.
_ZopeData
def
XMLtobbb
(
infile
,
outfile
,
binary
=
0
):
import
Shared.DC.xml.pyexpat
if
type
(
infile
)
is
StringType
:
data
=
open
(
infile
).
read
()
if
type
(
outfile
)
is
StringType
:
outfile
=
open
(
outfile
,
'w'
+
'b'
)
F
=
ppml
.
xmlPickler
()
F
.
end_handlers
[
'user'
]
=
save_user
F
.
end_handlers
[
'description'
]
=
save_description
F
.
end_handlers
[
'rec'
]
=
save_rec
F
.
start_handlers
[
'transaction'
]
=
start_transaction
F
.
start_handlers
[
'ZopeData'
]
=
start_ZopeData
F
.
binary
=
binary
F
.
file
=
outfile
F
.
tempfile
=
tempfile
.
TemporaryFile
()
p
=
xml
.
parsers
.
pyexpat
.
ParserCreate
()
p
.
CharacterDataHandler
=
F
.
handle_data
p
.
StartElementHandler
=
F
.
unknown_starttag
p
.
EndElementHandler
=
F
.
unknown_endtag
r
=
p
.
Parse
(
data
)
return
r
def
save_record
(
self
,
tag
,
data
):
file
=
self
.
file
write
=
file
.
write
pos
=
file
.
tell
()
file
.
seek
(
pos
)
a
=
data
[
1
]
if
a
.
has_key
(
'id'
):
oid
=
a
[
'id'
]
oid
=
ppml
.
p64
(
string
.
atoi
(
oid
))
v
=
''
for
x
in
data
[
2
:]:
v
=
v
+
x
l
=
ppml
.
p64
(
len
(
v
))
v
=
oid
+
l
+
v
return
v
class
zopedata
:
def
__init__
(
self
,
parser
,
tag
,
attrs
):
self
.
file
=
parser
.
file
write
=
self
.
file
.
write
write
(
'ZEXP'
)
def
append
(
self
,
data
):
file
=
self
.
file
write
=
file
.
write
pos
=
file
.
tell
()
file
.
seek
(
pos
)
write
(
data
)
def
start_zopedata
(
self
,
tag
,
data
):
return
zopedata
(
self
,
tag
,
data
)
def
save_zopedata
(
self
,
tag
,
data
):
file
=
self
.
file
write
=
file
.
write
pos
=
file
.
tell
()
file
.
seek
(
pos
)
write
(
export_end_marker
)
def
XMLtoExport
(
infile
,
outfile
):
import
Shared.DC.xml.pyexpat.pyexpat
pyexpat
=
Shared
.
DC
.
xml
.
pyexpat
.
pyexpat
if
type
(
infile
)
is
StringType
:
infile
=
open
(
infile
)
if
type
(
outfile
)
is
StringType
:
outfile
=
open
(
outfile
,
'w'
+
'b'
)
data
=
infile
.
read
()
F
=
ppml
.
xmlPickler
()
F
.
end_handlers
[
'record'
]
=
save_record
F
.
end_handlers
[
'ZopeData'
]
=
save_zopedata
F
.
start_handlers
[
'ZopeData'
]
=
start_zopedata
F
.
binary
=
1
F
.
file
=
outfile
p
=
pyexpat
.
ParserCreate
()
p
.
CharacterDataHandler
=
F
.
handle_data
p
.
StartElementHandler
=
F
.
unknown_starttag
p
.
EndElementHandler
=
F
.
unknown_endtag
r
=
p
.
Parse
(
data
)
return
r
def
XMLrecord
(
oid
,
len
,
p
):
q
=
ppml
.
ToXMLUnpickler
f
=
StringIO
(
p
)
u
=
q
(
f
)
u
.
idprefix
=
str
(
oid
)
+
'.'
p
=
u
.
load
().
__str__
(
4
)
if
f
.
tell
()
<
len
:
p
=
p
+
u
.
load
().
__str__
(
4
)
String
=
' <record id="%s">
\
n
%s </record>
\
n
'
%
(
oid
,
p
)
return
String
def
ExporttoXML
(
file
):
String
=
''
if
type
(
file
)
is
StringType
:
file
=
open
(
file
,
'rb'
)
read
=
file
.
read
if
read
(
4
)
!=
'ZEXP'
:
raise
POSException
.
ExportError
,
'Invalid export header'
String
=
String
+
'<?xml version="1.0"?>
\
012
<ZopeData>
\
n
'
while
1
:
h
=
read
(
16
)
if
h
==
export_end_marker
:
break
if
len
(
h
)
!=
16
:
raise
ExportError
,
'Truncated export file'
oid
=
ppml
.
u64
(
h
[:
8
])
l
=
ppml
.
u64
(
h
[
8
:
16
])
pos
=
file
.
tell
()
p
=
read
(
l
)
if
len
(
p
)
!=
l
:
raise
ExportError
,
'Truncated export file'
String
=
String
+
XMLrecord
(
oid
,
l
,
p
)
l
=
l
+
pos
String
=
String
+
'</ZopeData>
\
n
'
return
String
# End exportToXML
def
XMLstringToExport
(
data
,
outfile
):
import
Shared.DC.xml.pyexpat
if
type
(
outfile
)
is
StringType
:
outfile
=
open
(
outfile
,
'w'
+
'b'
)
F
=
ppml
.
xmlPickler
()
F
.
end_handlers
[
'record'
]
=
save_record
F
.
end_handlers
[
'ZopeData'
]
=
save_zopedata
F
.
start_handlers
[
'ZopeData'
]
=
start_zopedata
F
.
binary
=
1
F
.
file
=
outfile
p
=
xml
.
parsers
.
pyexpat
.
ParserCreate
()
p
.
CharacterDataHandler
=
F
.
handle_data
p
.
StartElementHandler
=
F
.
unknown_starttag
p
.
EndElementHandler
=
F
.
unknown_endtag
r
=
p
.
Parse
(
data
)
return
r
if
__name__
==
'__main__'
:
exportToXML
(
sys
.
argv
[
1
])
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment