【发布时间】:2021-10-16 23:06:03
【问题描述】:
我在使用 Python 的 xml.etree.ElementTree 库从其中 name == 'mykey' 的 XML 中提取(名称,值)对时遇到问题。我想要的伪代码是:
if (name.text == 'mykey'):
print value.text
Value 将是 mykey 的值,在本例中为 XX111。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE charles-session SYSTEM "https://www.charlesproxy.com/dtd/charles-session-1_2.dtd">
<charles-session>
<header>
<name>Content-Length</name>
<value>10804</value>
</header>
<header>
<name>Date</name>
<value>Wed, 13 Oct 2021 22:02:42 GMT</value>
</header>
<header>
<name>mykey</name>
<value>XX111</value>
</header>
<header>
<name>Accept-Language</name>
<value>en-US;q=1.0, el-US;q=0.9</value>
</header>
我可以打印 'mykey' 文本,但我不知道怎么说“现在给我 'mykey' 之后的值文本。
for name in root_node.iter('name'):
if re.match(r'mykey', name.text):
print(name.text)
【问题讨论】:
-
你能检查一下根设置在哪里吗?同样在代码中,您匹配
name.text,然后打印相同,它不会给您mykey的值。如果您的根设置为charles-session,那么以下将为您提供XX111。 sn-pfor each in root.findall(".//header"): if "mykey" in each[0].text: print(each[1].text) -
根是
。这就是我执行以下操作时得到的结果:``` root_node = tree.getroot() print root_node ``` -
您的解决方案有效,谢谢! :)
-
我认为没有内置方法来获取行号,您可以探索how to get line number中列出的选项
-
请看一下答案,这可能会有所帮助:)。