如何为 Python 中的某些标签解析 XML 文件?
How do I parse an XML file for certain tags in Python?
Python:我正在使用 xml.etree.ElementTree 来尝试解析 XML 文件。该文件看起来像这样(省略号是不重要的额外数据):
<root xmlns="ns1" xmlns:common="nscommon" ......>
<item>
<name> Foo </name>
.
.
.
<value>
<min> 0 </min>
<max> 5 </max>
</value>
</item>
<item>
<name> Bar </name>
.
.
.
<value>
<min> 12 </min>
<max> 31 </max>
</value>
</item>
</root>
我的目标是获得 Foo 的最小值和最大值。我无法编辑文件,因此项目不能有任何标识符。
我正在使用 root.iter()
浏览文件,因此我可以获得每个标签和值。但是,输出将是这样的:
Foo
1
2
10
0 <------- goal
5 <------- goal
Bar
Hi
123
9031
12
31
我不确定如何具体隔离最小值和最大值,因为会抓取其他数字数据。说 "Hey we're looking at Foo, and all the numbers after Foo but before Bar belong to Foo, and this number is the Min and this is the Max" 的东西。这在英语中比在代码中更容易表达。
谢谢!
这是一个通用的解决方案,其中包含一个读取 XML 字符串的示例。如果你想从 XML 文件中获取根目录,你应该这样做:
tree = ET.parse(file_name)
root = tree.getroot()
代码:
import xml.etree.ElementTree as ET
xml_string = """
<root>
<item>
<name> Foo </name>
<value>
<min> 0 </min>
<max> 10 </max>
</value>
</item>
</root>
"""
def find_max_min(root, name):
for item_e in root.iter('item'):
name_e = item_e.find('name')
if name_e.text.strip() == name:
value_tag = item_e.find('value')
min_val = int(value_tag.find('min').text)
max_val = int(value_tag.find('max').text)
return max_val, min_val
if __name__ == '__main__':
root = ET.fromstring(xml_string)
max_val, min_val = find_max_min(root, 'Foo')
print('max: {}, min: {}'.format(max_val, min_val))
Python:我正在使用 xml.etree.ElementTree 来尝试解析 XML 文件。该文件看起来像这样(省略号是不重要的额外数据):
<root xmlns="ns1" xmlns:common="nscommon" ......>
<item>
<name> Foo </name>
.
.
.
<value>
<min> 0 </min>
<max> 5 </max>
</value>
</item>
<item>
<name> Bar </name>
.
.
.
<value>
<min> 12 </min>
<max> 31 </max>
</value>
</item>
</root>
我的目标是获得 Foo 的最小值和最大值。我无法编辑文件,因此项目不能有任何标识符。
我正在使用 root.iter()
浏览文件,因此我可以获得每个标签和值。但是,输出将是这样的:
Foo
1
2
10
0 <------- goal
5 <------- goal
Bar
Hi
123
9031
12
31
我不确定如何具体隔离最小值和最大值,因为会抓取其他数字数据。说 "Hey we're looking at Foo, and all the numbers after Foo but before Bar belong to Foo, and this number is the Min and this is the Max" 的东西。这在英语中比在代码中更容易表达。 谢谢!
这是一个通用的解决方案,其中包含一个读取 XML 字符串的示例。如果你想从 XML 文件中获取根目录,你应该这样做:
tree = ET.parse(file_name)
root = tree.getroot()
代码:
import xml.etree.ElementTree as ET
xml_string = """
<root>
<item>
<name> Foo </name>
<value>
<min> 0 </min>
<max> 10 </max>
</value>
</item>
</root>
"""
def find_max_min(root, name):
for item_e in root.iter('item'):
name_e = item_e.find('name')
if name_e.text.strip() == name:
value_tag = item_e.find('value')
min_val = int(value_tag.find('min').text)
max_val = int(value_tag.find('max').text)
return max_val, min_val
if __name__ == '__main__':
root = ET.fromstring(xml_string)
max_val, min_val = find_max_min(root, 'Foo')
print('max: {}, min: {}'.format(max_val, min_val))