Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
075854fc
Kaydet (Commit)
075854fc
authored
Ara 12, 2005
tarafından
Fredrik Lundh
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
added ElementTree core components to xml.etree
üst
c5c57e6d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
367 additions
and
0 deletions
+367
-0
ElementInclude.py
Lib/xml/etree/ElementInclude.py
+141
-0
ElementPath.py
Lib/xml/etree/ElementPath.py
+196
-0
ElementTree.py
Lib/xml/etree/ElementTree.py
+0
-0
__init__.py
Lib/xml/etree/__init__.py
+30
-0
No files found.
Lib/xml/etree/ElementInclude.py
0 → 100644
Dosyayı görüntüle @
075854fc
#
# ElementTree
# $Id: ElementInclude.py 1862 2004-06-18 07:31:02Z Fredrik $
#
# limited xinclude support for element trees
#
# history:
# 2003-08-15 fl created
# 2003-11-14 fl fixed default loader
#
# Copyright (c) 2003-2004 by Fredrik Lundh. All rights reserved.
#
# fredrik@pythonware.com
# http://www.pythonware.com
#
# --------------------------------------------------------------------
# The ElementTree toolkit is
#
# Copyright (c) 1999-2004 by Fredrik Lundh
#
# By obtaining, using, and/or copying this software and/or its
# associated documentation, you agree that you have read, understood,
# and will comply with the following terms and conditions:
#
# Permission to use, copy, modify, and distribute this software and
# its associated documentation for any purpose and without fee is
# hereby granted, provided that the above copyright notice appears in
# all copies, and that both that copyright notice and this permission
# notice appear in supporting documentation, and that the name of
# Secret Labs AB or the author not be used in advertising or publicity
# pertaining to distribution of the software without specific, written
# prior permission.
#
# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
# --------------------------------------------------------------------
##
# Limited XInclude support for the ElementTree package.
##
import
copy
import
ElementTree
XINCLUDE
=
"{http://www.w3.org/2001/XInclude}"
XINCLUDE_INCLUDE
=
XINCLUDE
+
"include"
XINCLUDE_FALLBACK
=
XINCLUDE
+
"fallback"
##
# Fatal include error.
class
FatalIncludeError
(
SyntaxError
):
pass
##
# Default loader. This loader reads an included resource from disk.
#
# @param href Resource reference.
# @param parse Parse mode. Either "xml" or "text".
# @param encoding Optional text encoding.
# @return The expanded resource. If the parse mode is "xml", this
# is an ElementTree instance. If the parse mode is "text", this
# is a Unicode string. If the loader fails, it can return None
# or raise an IOError exception.
# @throws IOError If the loader fails to load the resource.
def
default_loader
(
href
,
parse
,
encoding
=
None
):
file
=
open
(
href
)
if
parse
==
"xml"
:
data
=
ElementTree
.
parse
(
file
)
.
getroot
()
else
:
data
=
file
.
read
()
if
encoding
:
data
=
data
.
decode
(
encoding
)
file
.
close
()
return
data
##
# Expand XInclude directives.
#
# @param elem Root element.
# @param loader Optional resource loader. If omitted, it defaults
# to {@link default_loader}. If given, it should be a callable
# that implements the same interface as <b>default_loader</b>.
# @throws FatalIncludeError If the function fails to include a given
# resource, or if the tree contains malformed XInclude elements.
# @throws IOError If the function fails to load a given resource.
def
include
(
elem
,
loader
=
None
):
if
loader
is
None
:
loader
=
default_loader
# look for xinclude elements
i
=
0
while
i
<
len
(
elem
):
e
=
elem
[
i
]
if
e
.
tag
==
XINCLUDE_INCLUDE
:
# process xinclude directive
href
=
e
.
get
(
"href"
)
parse
=
e
.
get
(
"parse"
,
"xml"
)
if
parse
==
"xml"
:
node
=
loader
(
href
,
parse
)
if
node
is
None
:
raise
FatalIncludeError
(
"cannot load
%
r as
%
r"
%
(
href
,
parse
)
)
node
=
copy
.
copy
(
node
)
if
e
.
tail
:
node
.
tail
=
(
node
.
tail
or
""
)
+
e
.
tail
elem
[
i
]
=
node
elif
parse
==
"text"
:
text
=
loader
(
href
,
parse
,
e
.
get
(
"encoding"
))
if
text
is
None
:
raise
FatalIncludeError
(
"cannot load
%
r as
%
r"
%
(
href
,
parse
)
)
if
i
:
node
=
elem
[
i
-
1
]
node
.
tail
=
(
node
.
tail
or
""
)
+
text
else
:
elem
.
text
=
(
elem
.
text
or
""
)
+
text
+
(
e
.
tail
or
""
)
del
elem
[
i
]
continue
else
:
raise
FatalIncludeError
(
"unknown parse type in xi:include tag (
%
r)"
%
parse
)
elif
e
.
tag
==
XINCLUDE_FALLBACK
:
raise
FatalIncludeError
(
"xi:fallback tag must be child of xi:include (
%
r)"
%
e
.
tag
)
else
:
include
(
e
,
loader
)
i
=
i
+
1
Lib/xml/etree/ElementPath.py
0 → 100644
Dosyayı görüntüle @
075854fc
#
# ElementTree
# $Id: ElementPath.py 1858 2004-06-17 21:31:41Z Fredrik $
#
# limited xpath support for element trees
#
# history:
# 2003-05-23 fl created
# 2003-05-28 fl added support for // etc
# 2003-08-27 fl fixed parsing of periods in element names
#
# Copyright (c) 2003-2004 by Fredrik Lundh. All rights reserved.
#
# fredrik@pythonware.com
# http://www.pythonware.com
#
# --------------------------------------------------------------------
# The ElementTree toolkit is
#
# Copyright (c) 1999-2004 by Fredrik Lundh
#
# By obtaining, using, and/or copying this software and/or its
# associated documentation, you agree that you have read, understood,
# and will comply with the following terms and conditions:
#
# Permission to use, copy, modify, and distribute this software and
# its associated documentation for any purpose and without fee is
# hereby granted, provided that the above copyright notice appears in
# all copies, and that both that copyright notice and this permission
# notice appear in supporting documentation, and that the name of
# Secret Labs AB or the author not be used in advertising or publicity
# pertaining to distribution of the software without specific, written
# prior permission.
#
# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
# --------------------------------------------------------------------
##
# Implementation module for XPath support. There's usually no reason
# to import this module directly; the <b>ElementTree</b> does this for
# you, if needed.
##
import
re
xpath_tokenizer
=
re
.
compile
(
"(::|
\
.
\
.|
\
(
\
)|[/.*:
\
[
\
]
\
(
\
)@=])|((?:
\
{[^}]+
\
})?[^/:
\
[
\
]
\
(
\
)@=
\
s]+)|
\
s+"
)
.
findall
class
xpath_descendant_or_self
:
pass
##
# Wrapper for a compiled XPath.
class
Path
:
##
# Create an Path instance from an XPath expression.
def
__init__
(
self
,
path
):
tokens
=
xpath_tokenizer
(
path
)
# the current version supports 'path/path'-style expressions only
self
.
path
=
[]
self
.
tag
=
None
if
tokens
and
tokens
[
0
][
0
]
==
"/"
:
raise
SyntaxError
(
"cannot use absolute path on element"
)
while
tokens
:
op
,
tag
=
tokens
.
pop
(
0
)
if
tag
or
op
==
"*"
:
self
.
path
.
append
(
tag
or
op
)
elif
op
==
"."
:
pass
elif
op
==
"/"
:
self
.
path
.
append
(
xpath_descendant_or_self
())
continue
else
:
raise
SyntaxError
(
"unsupported path syntax (
%
s)"
%
op
)
if
tokens
:
op
,
tag
=
tokens
.
pop
(
0
)
if
op
!=
"/"
:
raise
SyntaxError
(
"expected path separator (
%
s)"
%
(
op
or
tag
)
)
if
self
.
path
and
isinstance
(
self
.
path
[
-
1
],
xpath_descendant_or_self
):
raise
SyntaxError
(
"path cannot end with //"
)
if
len
(
self
.
path
)
==
1
and
isinstance
(
self
.
path
[
0
],
type
(
""
)):
self
.
tag
=
self
.
path
[
0
]
##
# Find first matching object.
def
find
(
self
,
element
):
tag
=
self
.
tag
if
tag
is
None
:
nodeset
=
self
.
findall
(
element
)
if
not
nodeset
:
return
None
return
nodeset
[
0
]
for
elem
in
element
:
if
elem
.
tag
==
tag
:
return
elem
return
None
##
# Find text for first matching object.
def
findtext
(
self
,
element
,
default
=
None
):
tag
=
self
.
tag
if
tag
is
None
:
nodeset
=
self
.
findall
(
element
)
if
not
nodeset
:
return
default
return
nodeset
[
0
]
.
text
or
""
for
elem
in
element
:
if
elem
.
tag
==
tag
:
return
elem
.
text
or
""
return
default
##
# Find all matching objects.
def
findall
(
self
,
element
):
nodeset
=
[
element
]
index
=
0
while
1
:
try
:
path
=
self
.
path
[
index
]
index
=
index
+
1
except
IndexError
:
return
nodeset
set
=
[]
if
isinstance
(
path
,
xpath_descendant_or_self
):
try
:
tag
=
self
.
path
[
index
]
if
not
isinstance
(
tag
,
type
(
""
)):
tag
=
None
else
:
index
=
index
+
1
except
IndexError
:
tag
=
None
# invalid path
for
node
in
nodeset
:
new
=
list
(
node
.
getiterator
(
tag
))
if
new
and
new
[
0
]
is
node
:
set
.
extend
(
new
[
1
:])
else
:
set
.
extend
(
new
)
else
:
for
node
in
nodeset
:
for
node
in
node
:
if
path
==
"*"
or
node
.
tag
==
path
:
set
.
append
(
node
)
if
not
set
:
return
[]
nodeset
=
set
_cache
=
{}
##
# (Internal) Compile path.
def
_compile
(
path
):
p
=
_cache
.
get
(
path
)
if
p
is
not
None
:
return
p
p
=
Path
(
path
)
if
len
(
_cache
)
>=
100
:
_cache
.
clear
()
_cache
[
path
]
=
p
return
p
##
# Find first matching object.
def
find
(
element
,
path
):
return
_compile
(
path
)
.
find
(
element
)
##
# Find text for first matching object.
def
findtext
(
element
,
path
,
default
=
None
):
return
_compile
(
path
)
.
findtext
(
element
,
default
)
##
# Find all matching objects.
def
findall
(
element
,
path
):
return
_compile
(
path
)
.
findall
(
element
)
Lib/xml/etree/ElementTree.py
0 → 100644
Dosyayı görüntüle @
075854fc
This diff is collapsed.
Click to expand it.
Lib/xml/etree/__init__.py
0 → 100644
Dosyayı görüntüle @
075854fc
# $Id: __init__.py 1821 2004-06-03 16:57:49Z fredrik $
# elementtree package
# --------------------------------------------------------------------
# The ElementTree toolkit is
#
# Copyright (c) 1999-2004 by Fredrik Lundh
#
# By obtaining, using, and/or copying this software and/or its
# associated documentation, you agree that you have read, understood,
# and will comply with the following terms and conditions:
#
# Permission to use, copy, modify, and distribute this software and
# its associated documentation for any purpose and without fee is
# hereby granted, provided that the above copyright notice appears in
# all copies, and that both that copyright notice and this permission
# notice appear in supporting documentation, and that the name of
# Secret Labs AB or the author not be used in advertising or publicity
# pertaining to distribution of the software without specific, written
# prior permission.
#
# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
# --------------------------------------------------------------------
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