0
我有一个xml文件,包含一个有趣的评论,我想解析它。在Python3中解析特定的xml注释
Here我发现我可以处理评论,但我不知道如何使用它们从我的主应用程序。
#!/usr/bin/python3
import xml.etree.ElementTree as ET
with open('xml_with_comments.xml', 'w') as f:
f.write('''<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<blah>node 1</blah>
<!-- secret_content: Hello! -->
<blah>node 2</blah>
<!-- A standard comment -->
<blah>node 3</blah>
</root>
''')
class TreeBuilderWithComments(ET.TreeBuilder):
def comment(self, data):
if data.startswith(' secret_content: '):
self.start(ET.Comment, {})
self.data(data)
self.end(ET.Comment)
print('Secret content from TreeBuilderWithComments: ' + data[17:-1])
root = ET.parse('xml_with_comments.xml', parser=ET.XMLParser(target=TreeBuilderWithComments())).getroot()
for blah in root.findall('blah'):
print(blah.text)
此输出:
Secret content from TreeBuilderWithComments: Hello!
node 1
node 2
node 3
现在我想这样做print(root.get_secret_content())
,应由打印文件begining的第一个注释 'secret_content:'。
谢谢!我还修改了TreeBuilderWithComments.comment():'def comment(self,data):[\ n] SECRET_CONTENT_KEY ='secret_content:'[\ n] data = data.strip()[\ n]如果data.startswith(SECRET_CONTENT_KEY) :[\ n] self.secret_content = data [len(SECRET_CONTENT_KEY):]'。所以_get_secret_content()_是一个简单的getter。 – roipoussiere