【发布时间】:2015-08-05 08:39:41
【问题描述】:
我正在运行一个 python 程序来从 XML 文件中获取一个子树。以下是我正在运行以从 tag 获取子树的代码。
示例文件:
<?xml version="1.0" encoding="utf-8"?>
<nc:data xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<system xmlns="abc.org">
<context>
<name>context_1</name>
<host>
<name>Name_Node</name>
<tag1>
<name>ABC</name>
<tag2>PQR</tag2>
</tag1>
</host>
</context>
</system>
</nc:data>
和iterparse函数
class xml_file_generation:
def xml_parse_new(self):
for event, elem in ET.iterparse('sample.xml', events=events, tag="context"):
print "In loop"
print ET.tostring(elem)
print("%s" % (elem.tag))
elem.close()
test = xml_file_generation()
test.xml_parse_new()
但是这段代码没有返回任何内容。
如果我运行与下面相同的代码,则输出符合预期:
xml = '''\
<root>
<element key='value'>text</element>
<element>text</element>tail
<empty-element xmlns="testns" />
<testtag>abc</testtag>
</root>
'''
events = ("start", "end")
context = ET.iterparse(StringIO(xml), events=events, tag='testtag')
for action, elem in context:
print action, elem.tag
print elem.text
如果可能,请提出解决方案。
【问题讨论】:
-
你是在第一种情况下调用函数吗?你得到的输出是什么?
-
@anand 是的,我正在调用它.. 更新相同的问题!
-
你在第一种情况下得到的输出是什么?
-
@AnandSKumar:我没有得到任何输出。我还尝试将 print "In loop" 放入定义的函数中。即使那没有被打印出来!!
-
这不是完整的代码,是吗?您似乎在调用
xml_parse_new(),但定义接受self参数。你确定你调用的是正确的方法吗?看起来该方法在某个类中。你能链接到或更新完整的代码吗?
标签: python xml-parsing lxml