Python编写一个程序以尝试解析XML⼀HTML标签.

2025-02-23 05:14:51
推荐回答(2个)
回答1:

要给这段文字添加一个 root 标签,然后对里面的 node 进行遍历。root 标签的名字可以任意定(但是必须添加一个),我这里使用的 root 命名,对于其它的名字也一样。如果你是直接读取的 XML 文件,而不是字符串,可以将文件打开,然后把文件句柄传入 ElementTree.parse() 函数,最后对其返回值进行遍历。


from xml.etree import ElementTree
parsed = ElementTree.XML('''
Wolfgang Amadeus Mozart Samuel Beckett London
''')
outstr = []
for node in parsed:
    outstr += ['%s:%s'%(node.tag, node.text)]
print(' '.join(outstr))

回答2:

在Python中使用SAX解析XML非常简洁,通常我们关心的事件是start_element,end_element和char_data,准备好这3个函数,然后就可以解析xml了。
举个例子,当SAX解析器读到一个节点时:
python
会产生3个事件:
start_element事件,在读取时;
char_data事件,在读取python时;
end_element事件,在读取时。
用代码实验一下:
from xml.parsers.expat import ParserCreate
class DefaultSaxHandler(object):
    def start_element(self, name, attrs):
        print('sax:start_element: %s, attrs: %s' % (name, str(attrs)))
    def end_element(self, name):
        print('sax:end_element: %s' % name)
    def char_data(self, text):
        print('sax:char_data: %s' % text)
xml = r'''

        
  1. Python

  2.     
  3. Ruby


'''
handler = DefaultSaxHandler()
parser = ParserCreate()
parser.returns_unicode = True
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(xml)