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

Я могу сделать сам, но не хочется изобретать велосипед. Ведь наверняка есть какие-то обкатанные механизмы.
usmix
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
Удачи!
slav0nic
etree.XMLParser(dtd_validation=True)
как вариант. а так читайте http://lxml.de/validation.html#xmlschema
PooH
slav0nic
etree.XMLParser(dtd_validation=True)
как вариант. а так читайте http://lxml.de/validation.html#xmlschema
При чем тут xmlschema? Он же только на well-formed хочет проверить, а не на валидность.
slav0nic
я про часть о валидации ващет, термин “косяки” довольно обширен и разнообразен ;)
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