如何从 python 中的 XML 文件中读取注释文本
How to read commented text from XML file in python
我可以使用 'import xml.etree.ElementTree as et' 读取 xml 文件。但我的问题是阅读数据文件中给出的注释文本,如何阅读:
比如下面的xml,我想读BaseVehicle是1997 Cadillac Catera
<App action="A" id="1">
<BaseVehicle id="8559"/>
<!-- 1997 Cadillac Catera -->
<Qty>1</Qty>
<PartType id="4472"/>
<!-- Electrical/Headlight/Switch -->
<Part>SW1406</Part>
</App>
ElementTree 的标准行为是忽略评论。但是,可以使用自定义解析器对象来保留注释。这在 Python 3.8 中变得更容易,其中 xml.etree.ElementTree.TreeBuilder
目标可以配置为处理评论事件,以便将它们包含在生成的树中。
from xml.etree import ElementTree as ET
parser = ET.XMLParser(target=ET.TreeBuilder(insert_comments=True)) # Python 3.8
tree = ET.parse("app.xml", parser)
# Get the comment nodes
for node in tree.iter():
if "function Comment" in str(node.tag):
print(node.text)
输出:
1997 Cadillac Catera
Electrical/Headlight/Switch
对于旧版本的 Python,需要更多代码。参见 。
我可以使用 'import xml.etree.ElementTree as et' 读取 xml 文件。但我的问题是阅读数据文件中给出的注释文本,如何阅读: 比如下面的xml,我想读BaseVehicle是1997 Cadillac Catera
<App action="A" id="1">
<BaseVehicle id="8559"/>
<!-- 1997 Cadillac Catera -->
<Qty>1</Qty>
<PartType id="4472"/>
<!-- Electrical/Headlight/Switch -->
<Part>SW1406</Part>
</App>
ElementTree 的标准行为是忽略评论。但是,可以使用自定义解析器对象来保留注释。这在 Python 3.8 中变得更容易,其中 xml.etree.ElementTree.TreeBuilder
目标可以配置为处理评论事件,以便将它们包含在生成的树中。
from xml.etree import ElementTree as ET
parser = ET.XMLParser(target=ET.TreeBuilder(insert_comments=True)) # Python 3.8
tree = ET.parse("app.xml", parser)
# Get the comment nodes
for node in tree.iter():
if "function Comment" in str(node.tag):
print(node.text)
输出:
1997 Cadillac Catera
Electrical/Headlight/Switch
对于旧版本的 Python,需要更多代码。参见