gpt4 book ai didi

python - 在 Python 中迭代 XML 树中的孙子

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:39 24 4
gpt4 key购买 nike

有些东西不起作用,我正在尝试理解为什么。我好像和xml.etree.ElementTree examples from the documentation很相似,所以我不太明白出了什么问题。

假设我们有以下 XML 文件(高度简化的 SVG 字体文件示例):

<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>Text</metadata>
<defs>
<font id="ID">
<glyph glyph-name="G1" unicode="..."
d="path" />
<glyph glyph-name="G2" unicode="..."
d="path" />
<glyph glyph-name="G3" unicode="..."
d="path" />
<glyph glyph-name="G4" unicode="..."
d="path" />
</font>
</defs></svg>

现在,为什么没有返回任何内容?

In [1]: import xml.etree.ElementTree as ET
...:
...: tree = ET.parse('svg_font.xml')
...: root = tree.getroot()
...:
...: for glyph in root.findall('glyph'):
...: print('Name: ' + glyph.attrib)
...:

In [2]:

感谢您为我提供了一些线索!

最佳答案

每个标签的名称间隔应为 '{ http://www.w3.org/2000/svg }' 因为 svg 标记内的此声明 [xmlns="http://www.w3.org/2000/svg"]

例如,使用 '{ http://www.w3.org/2000/svg 代替 'glyph' }字形'

每个标签都应以“{ http://www.w3.org/2000/svg”为前缀}'

另外,使用“iter”代替“findall”!通过以下内容更改“for”循环

for glyph in El.iter('{http://www.w3.org/2000/svg}glyph'):
print('Name: ' + str(glyph.attrib))

关于python - 在 Python 中迭代 XML 树中的孙子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com