Найти - Пользователи
Полная версия: XML ElementTree Data Model
Начало » Python для экспертов » XML ElementTree Data Model
1
AndreyKS
Python 2.51. Установил:
elementtree-1.2.6-20050316.win32.exe
pywin32-210.win32-py2.5.exe
Следущий код работает через раз. уПодскажите в чём ошибка, плжалуйста
.
—————————————————————–
tree = parse(“C:\\Temp\\test.xml”)
doc = tree.getroot()
print doc.tag
—————————————————————-

C:\\Temp\\test.xml

<?xml version=“1.0” encoding=“UTF-8”?>
<document>
<group name=“Основное расписание звонков”>
<task>
<title>Звонок на первую пару</title>
<enabled>on</enabled>
<start_date>2007/10/23</start_date>
<end_date>2007/11/23</end_date>
<time>9:00</time>
<Monday>on</Monday>
<Tuesday>on</Tuesday>
<Wednesday>on</Wednesday>
<Thursday>on</Thursday>
<Friday>on</Friday>
</task>
<task>
<title>Звонок c первой пары</title>
<enabled>on</enabled>
<start_date>2007/10/23</start_date>
<end_date>2007/11/23</end_date>
<time>10:20</time>
<Monday>on</Monday>
<Tuesday>on</Tuesday>
<Wednesday>on</Wednesday>
<Thursday>on</Thursday>
<Friday>on</Friday>
</task>
<task_one>
<title>Начало соревнований</title>
<enabled>on</enabled>
<date>2007/10/25</date>
<time>15:20</time>
</task_one>
</group>
</document>
poltergeist
1) зачем было ставить elementtree, если он и так по дефолту установлен в питоне 2.5???
2) у меня всё работает, вот примерно так:

>>> import xml.etree.cElementTree as eTree
>>> tree = eTree.parse('c:\\Temp\\temp.xml')
>>> root = tree.getroot()
>>> root.tag
'document'
>>>


Если у тебя появляется ошибка, выведи её сюда, посмотрим вместе.
AndreyKS
В стандартном IDLE построчно работает. Пробовал вместо xml.etree.cElementTree ставить xml.etree.ElementTree - тоже работает.
Но когда сохраняю в файлы открываю его в этой же IDLE, выдаются ошибки.

————————————————-
import xml.etree.cElementTree as eTree
tree = eTree.parse('c:\\Temp\\test.xml')
root = tree.getroot()
root.tag
————————————————–

Traceback (most recent call last):
File “C:\Python25\atmel\xml.py”, line 1, in <module>
import xml.etree.cElementTree as eTree
File “C:\Python25\atmel\xml.py”, line 1, in <module>
import xml.etree.cElementTree as eTree
ImportError: No module named etree.cElementTree

Но построчно всё работает
>>> import xml.etree.cElementTree as eTree
>>> tree = eTree.parse('c:\\Temp\\test.xml')
>>> root = tree.getroot()
>>> root.tag
'document'

Подскажите, чем отличается xml.etree.cElementTree от xml.etree.ElementTree и что лучше использовать.
И почему из файла не работает. Пробовал кодировку указывать.

# -*- coding: UTF-8 -*-

import xml.etree.cElementTree as eTree

tree = eTree.parse('c:\\Temp\\test.xml')
root = tree.getroot()
root.tag
poltergeist
Может всё-таки следует переименовать свой исходный файл “xml.py” в что-нибудь менее похожее на стандартный питоновский package “xml” :)
AndreyKS
poltergeist
Может всё-таки следует переименовать свой исходный файл “xml.py” в что-нибудь менее похожее на стандартный питоновский package “xml”
спасибо!!!

Подскажите, чем отличается xml.etree.cElementTree от xml.etree.ElementTree и что лучше использовать.
poltergeist
xml.etree.cElementTree - это сишная реализация ElementTree, она в несколько раз быстрее парсит xml, я ею и пользуюсь, но есть смысл использовать и стандартный питонский ElementTree, он универсальнее и видно как он работает (исходники не так уж велики и читаемы), так что вместе - это очень хороший и быстрый парсер.
Андрей Светлов
конечно.
Это так же как:
StringIO - cStringIO
pickle - cPickle
и т.д.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB