Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2011 18:35:08

fyrros
От:
Зарегистрирован: 2011-02-07
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

[lxml] Валидность xml

Требуется проверить xml на отсутствие косяков, которые могут нарушить структуру (при этом сама структура неизвестна).
Например xml вида:

<root>
<item1>text</item1>
<item2 attr1="attr1"/>
</root>
Требуется, чтобы подобный вариант
<root>
<item1text</item1>
em2 attr1="attr1"/>
</root>
не проходил проверку.
Т.е. чтобы всегда можно было не волноваться за отсутствие начального тега, конечного тега итп.
Пока что все косяки со строками, которые начинаются с открывающего тега (item1), удается избегать через except, но когда строка начинается с текста (item2) - lxml ничего против не имеет.

Я могу сделать сам, но не хочется изобретать велосипед. Ведь наверняка есть какие-то обкатанные механизмы.



Офлайн

#2 Авг. 22, 2011 02:23:14

usmix
От:
Зарегистрирован: 2011-07-08
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

[lxml] Валидность xml

fyrros
Требуется проверить xml на отсутствие косяков
valid.xml
<root>
<item1>text</item1>
<item2 attr1="attr1"/>
</root>
invalid.xml
<root>
<item1text</item1>
em2 attr1="attr1"/>
</root>
verifyXml.py
#-*- codepage: cp1251 -*-

from xml.etree.ElementTree import ElementTree

def verifyXml(filename):
tree = ElementTree()
try:
tree.parse(filename)
except:
return False

return True

def main():
for f in ['valid.xml', 'invalid.xml']:
print 'File %s is %s' % (f, 'valid' if verifyXml(f) else 'invalid')

if __name__ == '__main__':
main()
Результат:
File valid.xml is valid
File invalid.xml is invalid
Удачи!



Отредактировано (Авг. 22, 2011 02:24:32)

Офлайн

#3 Авг. 22, 2011 11:42:09

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

[lxml] Валидность xml

etree.XMLParser(dtd_validation=True)
как вариант. а так читайте http://lxml.de/validation.html#xmlschema

Офлайн

#4 Авг. 23, 2011 05:37:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

[lxml] Валидность xml

slav0nic
etree.XMLParser(dtd_validation=True)
как вариант. а так читайте http://lxml.de/validation.html#xmlschema
При чем тут xmlschema? Он же только на well-formed хочет проверить, а не на валидность.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Авг. 23, 2011 10:01:29

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

[lxml] Валидность xml

я про часть о валидации ващет, термин “косяки” довольно обширен и разнообразен ;)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version