【发布时间】:2021-12-14 17:24:34
【问题描述】:
我想使用 SAX 打印 XML 文件中特定标记之间的文本。
但是,某些文本输出包含空格或换行符。
有没有办法只挑出实际的字符串?我做错了什么?
请参阅下面的代码提取和 XML 文档。
(我在 Python 2 和 Python 3 中都获得了相同的效果。)
#!/usr/bin/env python3
import xml.sax
class MyHandler(xml.sax.ContentHandler):
def startElement(self, name, attrs):
self.tag = name
def characters(self, content):
if self.tag == "artist":
print('[%s]' % content)
if __name__=='__main__':
parser=xml.sax.make_parser()
Handler=MyHandler()
parser.setContentHandler(Handler) #overriding default ContextHandler
parser.parse("songs.xml")
<?xml version="1.0"?>
<genre catalogue="Pop">
<song title="No Tears Left to Cry">
<artist>Ariana Grande</artist>
<year>2018</year>
<album>Sweetener</album>
</song>
<song title="Delicate">
<artist>Taylor Swift</artist>
<year>2018</year>
<album>Reputation</album>
</song>
<song title="Mrs. Potato Head">
<artist>Melanie Martinez</artist>
<year>2015</year>
<album>Cry Baby</album>
</song>
</genre>
【问题讨论】:
-
ok 澄清了措辞,进行了编辑以包含完整的最小示例代码并添加了 XML 文档。
-
另一个问题是 pylint 抱怨标签是在 init 之外定义的(代码 W0201),但是,如果我在类中添加一个 init 方法, pylint 抱怨这个方法不是从基类调用的(代码 W0231),
标签: python python-3.x xml python-2.x sax