编辑:
谢谢你们,我完全忘记了:在for语句的最后。另外,对于我用空格的原始标签,我只是用它作为填充文本!实际名称确实有aword_anotherword作为元素标签现在,如果我有这样的话,
<TIER name="a">
<tier_1>
<tier_2>
<tier_3> a1</tier_3>
</tier_2>
</tier_1>
<tier_1>
<tier_2>
<tier_3> a2</tier_3>
</tier_2>
</tier_1>
<tier_1>
<tier_2>
<tier_3> a3</tier_3>
</tier_2>
</tier_1>
</TIER>
<TIER name="b">
<tier_1>
<tier_2>
<tier_3> b1</tier_3>
</tier_2>
</tier_1>
<tier_1>
<tier_2>
<tier_3> b2</tier_3>
</tier_2>
</tier_1>
<tier_1>
<tier_2>
<tier_3> b3</tier_3>
</tier_2>
</tier_1>
</TIER>
我如何才能从名为“a”的第一层打印tier_3?
我有一个像这样的xml表
<ALL TIERS>
<tier 1>
<tier 2>
<tier 3> Hello one!</tier3>
</tier 2>
</tier 1>
<tier 1>
<tier 2>
<tier 3> Hello two!</tier3>
</tier 2>
</tier 1>
<tier 1>
<tier 2>
<tier 3> Hello three!</tier3>
</tier 2>
</tier 1>
</ALL TIERS>
我想使用python打印allo f tier 3的文本节点值,所以它变成了这样的
你好一个!你好两个!你好三个!
我写了这个:
from xml.dom import minidom
xmldoc = minidom.parse(sys.argv[1])
xlist = xmldoc.getElementsByTagName('tier 3')
for i in xlist
print " ".join(t.nodeValue for t in i.childNodes if t.nodeType==t.TEXT_NODE)
但是这给了我一个错误的无效语法指向“for i in xlist”
有人可以帮我纠正这个吗? 谢谢!
答案 0 :(得分:1)
从Xml获取text
的替代方法。
此外,由于标签中包含 spaces ,因此Xml格式不正确。
import xml.etree.ElementTree as ET
txt = """<ALL-TIERS>
<tier-1>
<tier-2>
<tier-3> Hello one!</tier-3>
</tier-2>
</tier-1>
<tier-1>
<tier-2>
<tier-3> Hello two!</tier-3>
</tier-2>
</tier-1>
<tier-1>
<tier-2>
<tier-3> Hello three!</tier-3>
</tier-2>
</tier-1>
</ALL-TIERS>
"""
root = ET.fromstring(txt)
for e in root.iter('ALL-TIERS'):
print ">>"
print ET.tostring(e, method="text").strip()
print "<<"
for e in root.iter('tier-3'):
print ">>"
print ET.tostring(e, method="text").strip()
print "<<"
给出:
>>
Hello one!
Hello two!
Hello three!
<<
>>
Hello one!
<<
>>
Hello two!
<<
>>
Hello three!
<<
答案 1 :(得分:0)
您当前的问题是您错过了for for statement上的:
for i in xlist:
您还想要import sys
并且您的XML格式不正确,可能使用<ALL_TIERS>
而不是<ALL TIERS>
? (你也想改变结束标签。)