Python获取特定元素的元素值

标签 python xml elementtree

我正在尝试解析以下 XML 文件,但无法获取特定的元素值。我正在尝试指定元素“Item_No_2”以获取相关值 <v>2222222222</v>但我无法使用 get.element('Item_No_2') 来做到这一点。我是否错误地使用了 get.element 值?

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Data.xsl"?>
<abc>
  <md>
    <mi>
      <datetime>20160822020003</datetime>
      <period>3600</period>
      <it>Item_No_1</it>
      <it>Item_No_2</it>
      <it>Item_No_3</it>
      <it>Item_No_4</it>
      <it>Item_No_5</it>
      <it>Item_No_6</it>
      <it>Item_No_7</it>
      <ovalue>
        <v>1111111111</v>
        <v>2222222222</v>
        <v>3333333333</v>
        <v>4444444444</v>
        <v>5555555555</v>
        <v>6666666666</v>
        <v>7777777777</v>
      </ovalue>
    </mi>
  </md>
</abc>

我的代码:

from xml.etree.ElementTree import parse

doc = parse('test.xml').getroot()

for element in doc.findall('md/mi/'):
    print(element.text)

for element in doc.findall('md/mi/ovalue/'):
    print(element.text)

当前的输出分别获取它们,但我似乎无法理解如何调用特定的元素值。

输出:

20160822020003
3600
Item_No_1
Item_No_2
Item_No_3
Item_No_4
Item_No_5
Item_No_6
Item_No_7


1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777

试过这个但没有用:

for element in doc.findall('md/mi/ovalue/'):
    print(element.get('Item_No_1'))

最佳答案

doc.findall('md/mi/ovalue/') 找到的元素处没有Item_No_1

我想你可以尝试做的是得到两个列表

items = [e.text for e in doc.findall('md/mi/it')]
values = [e.text for e in doc.findall('md/mi/ovalue/v')]

然后从 items 中找到字符串 'Item_No_1' 的索引,然后用该数字索引到 values 中。

或者,zip 将两个列表放在一起,然后检查何时找到一个元素。

for item,value in zip(doc.findall('md/mi/it'), doc.findall('md/mi/ovalue/v')):
    if item.text == 'Item_No_1':
        print(value.text)

可能有更好的方法,但这些是首先想到的方法

关于Python获取特定元素的元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39091827/

相关文章:

Python Scikit - 调用 sklearn.metrics. precision_recall_curve 时输入形状错误

python - 'lxml.etree._Element' 对象没有属性 'write' ??? (PYTHON)

python - ElementTree不以UTF-8写入数据

xml - MarkLogic:XQuery 从 XML 文档中获取唯一名称?

python - 使用ElementTree进行XML提取解析

python - 获取 openCV 错误 : Assertion Failed

python - 我应该如何为 R 和 Octave 方法(可能使用 Python)进行快速 GUI 开发?

python - 将字符串列表从文件转换为整数列表

c# - 我如何使用 XmlTextReader 读取保管箱上的 xml 文件

java - 防止 JAXB XML 解析上的循环引用