Все ответы до сих пор довольно испорчены - они или включают добавление class="noprint"
ко всему или испортят display
в #printable
.
я думаю, что лучшее решение состояло бы в том, чтобы создать обертку вокруг непечатаемого материала:
<head>
<style type="text/css">
#printable { display: none; }
@media print
{
#non-printable { display: none; }
#printable { display: block; }
}
</style>
</head>
<body>
<div id="non-printable">
Your normal page contents
</div>
<div id="printable">
Printer version
</div>
</body>
, Конечно, это не прекрасно, поскольку это вовлекает перемещающиеся вещи в Ваш HTML немного...
Вам не нужно специально использовать iterparse
. Вместо этого следующий сценарий:
from cStringIO import StringIO
import xml.etree.ElementTree as ET
NS_MAP = {
'http://www.red-dove.com/ns/abc' : 'rdc',
'http://www.adobe.com/2006/mxml' : 'mx',
'http://www.red-dove.com/ns/def' : 'oth',
}
DATA = '''<?xml version="1.0" encoding="utf-8"?>
<rdc:container xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:rdc="http://www.red-dove.com/ns/abc"
xmlns:oth="http://www.red-dove.com/ns/def">
<mx:Style>
<oth:style1/>
</mx:Style>
<mx:Style>
<oth:style2/>
</mx:Style>
<mx:Style>
<oth:style3/>
</mx:Style>
</rdc:container>'''
tree = ET.parse(StringIO(DATA))
some_node = tree.getroot().getchildren()[1]
print ET.fixtag(some_node.tag, NS_MAP)
some_node = some_node.getchildren()[0]
print ET.fixtag(some_node.tag, NS_MAP)
производит
('mx:Style', None) ('oth:style2', None)
, который показывает, как вы можете получить доступ к полным именам тегов отдельных узлов в анализируемом дереве. Вы сможете адаптировать это к своим конкретным потребностям.
xml.etree.ElementTree, похоже, не имеет фиксированного тега, ну, ну, не по документации. Однако я просмотрел некоторый исходный код для исправления тега, и вы его видите:
import xml.etree.ElementTree as ET
for event, elem in ET.iterparse(inFile, events=("start", "end")):
namespace, looktag = string.split(elem.tag[1:], "}", 1)
У вас есть строка тега в поисковом теге, подходящая для поиска. Пространство имен находится в пространстве имен.