Python 2.6.6: 无法从当前元素的直接子元素中提取文本
Python 2.6.6: unable to extract text from direct children of the current element
我正在跟进 ElementTree tutorial,并且在使用那里提供的示例 XML 时,我得到的结果基本相同,但在使用我自己的 XML 文件时,我得到了意想不到的结果.
例如,我正在尝试从名为 marketCode
的所有 XML 个标签中提取文本。我的示例 XML 文件:
<process_config>
<input name="dataIn">
<filePattern>
<marketCode>nyse</marketCode>
<midfix/>
<format>csv</format>
</filePattern>
</input>
<input name="brokerIn">
<filePattern>
<marketCode>lse</marketCode>
<midfix>.CBOENL</midfix>
<format>csv</format>
</filePattern>
</input>
</process_config>
我使用以下代码提取数据:
import xml.etree.ElementTree as ET, sys, os
my_file = 'test.xml'
tree = ET.parse(my_file)
root = tree.getroot()
for filePattern in root.findall('filePattern'):
marketCode = filePattern.find('marketCode').text
print(marketCode)
当我 运行 上面的代码时,我得到一个空输出。预期输出如下:
nyse
lse
代码可能有什么问题?
filePattern
不是根元素的直接子元素。
有效:root.findall('.//filePattern')
。这也适用:root.findall('input/filePattern')
.
我正在跟进 ElementTree tutorial,并且在使用那里提供的示例 XML 时,我得到的结果基本相同,但在使用我自己的 XML 文件时,我得到了意想不到的结果.
例如,我正在尝试从名为 marketCode
的所有 XML 个标签中提取文本。我的示例 XML 文件:
<process_config>
<input name="dataIn">
<filePattern>
<marketCode>nyse</marketCode>
<midfix/>
<format>csv</format>
</filePattern>
</input>
<input name="brokerIn">
<filePattern>
<marketCode>lse</marketCode>
<midfix>.CBOENL</midfix>
<format>csv</format>
</filePattern>
</input>
</process_config>
我使用以下代码提取数据:
import xml.etree.ElementTree as ET, sys, os
my_file = 'test.xml'
tree = ET.parse(my_file)
root = tree.getroot()
for filePattern in root.findall('filePattern'):
marketCode = filePattern.find('marketCode').text
print(marketCode)
当我 运行 上面的代码时,我得到一个空输出。预期输出如下:
nyse
lse
代码可能有什么问题?
filePattern
不是根元素的直接子元素。
有效:root.findall('.//filePattern')
。这也适用:root.findall('input/filePattern')
.