Форум сайта python.su
1
Есть XML файл, содержащий префиксы в тегах. Префиксы могут быть разными. Попытка в лоб сделать независимый от префикса кусок кода не увенчалась успехам. Данный код:
import xml.dom.minidom dom = xml.dom.minidom.parse('C:\\1\\document.xml') docinfo=dom.getElementsByTagName('xdms:document') uidDoc = docinfo[0].getAttribute('xdms:uid') mesginfo=dom.getElementsByTagName('xdms:header') uidMesg=mesginfo[0].getAttribute('xdms:uid') docinfoNS=dom.getElementsByTagNameNS('*','document') uidDocNS = docinfoNS[0].getAttributeNS('','uid') mesginfoNS=dom.getElementsByTagNameNS('*','header') uidMesgNS=mesginfoNS[0].getAttributeNS('xdms','uid') print(docinfo) print(uidDoc) print(mesginfo) print(uidMesg) print('-'*40) print(docinfoNS) print(uidDocNS) print(mesginfoNS) print(uidMesgNS)
[<DOM Element: xdms:document at 0x29e6440>]
F68B21E0-A8EA-4059-8585-29222DFCD744
[<DOM Element: xdms:header at 0x29e2f58>]
886B92F1-0D7D-48AE-84AF-D440A4ED9028
----------------------------------------
[<DOM Element: xdms:document at 0x29e6440>]
[<DOM Element: xdms:header at 0x29e2f58>]
Офлайн
22
не совсем понятно. покажи пример xml. и что хочешь получить
Офлайн
1
ilnurхочу распарсить вот эту xml не зависимо каким будет префикс. необходимо вытаскивать значения атрибутов.
не совсем понятно. покажи пример xml. и что хочешь получить
<?xml version="1.0" encoding="windows-1251"?> <xdms:communication xdms:version="1.0" xmlns:xdms="......../IEDMS"> <xdms:header xdms:type="Документ" xdms:uid="886B92F1-0D7D-48AE-84AF-D440A4ED9028" xdms:created="2014-02-20T10:35:07.8559394+04:00"> </xdms:header> <xdms:document xdms:uid="F68B21E0-A8EA-4059-8585-29222DFCD744"> </xdms:communication>
Офлайн
22
а что в данном случае префикс?
посмотри эту тему. там парсится xml. все довольно просто. у тегов можно получить все атрибуты
http://python.su/forum/topic/23832/
Офлайн
1
в данном случаи префикс xdms, а тегом будет xdms:header, атрибуты тега будут xdms:type, xdms:uid. так вот не хочется зависить от префикса, и работать напрямую с header и uid. в принципе научился работать с тегами без префиксов, но вот атрибуты не хочет проглатывать( в этом собственно и проблема…
Офлайн
1
разобрался. можно закрывать или удалять…
Офлайн
22
al1можешь показать как ты это сделал?
разобрался. можно закрывать или удалять…
Офлайн
1
XML:
<?xml version="1.0" encoding="windows-1251"?> <xdms:communication xdms:version="1.0" xmlns:xdms="http://blablabla.com/IEDMS"> <xdms:header xdms:type="Документ" xdms:uid="886B92F1-0D7D-48AE-84AF-D440A4ED9028" xdms:created="2014-02-20T10:35:07.8559394+04:00"> </xdms:header> <xdms:document xdms:uid="F68B21E0-A8EA-4059-8585-29222DFCD744"> </xdms:communication>
import xml.dom.minidom dom = xml.dom.minidom.parse('C:\\1\\document.xml') docinfoNS=dom.getElementsByTagNameNS('*','document') uidDocNS = docinfoNS[0].getAttributeNS('http://blablabla.com/IEDMS','uid') print(docinfoNS) print(uidDocNS)
[<DOM Element: xdms:document at 0x29e6440>] F68B21E0-A8EA-4059-8585-29222DFCD744
<xdms:communication xdms:version="1.0" xmlns:xdms="http://blablabla.com/IEDMS">
http://blablabla.com/IEDMS
Отредактировано al1 (Апрель 4, 2014 08:56:30)
Офлайн