繁体   English   中英

Python xml.etree.ElementTree-如何引用我正在解析的当前节点

[英]Python xml.etree.ElementTree - how to reference the current node that I am parsing

我有两个正在使用的python文件。 在一个文件(file1.py)中,我开始了一个for循环,该循环进入XML文件中的每个主节点。 在另一个文件(file2.py)中,我解析了用于创建一些列表的所有必要属性。 然后将这些列表插入到file1.py中的查询中的MySQL数据库中。

当我仅遍历file2.py中的那个节点时,我能够成功解析XML文件中的每个节点。 但是,由于我在file1.py中开始循环,因此无法引用file2.py中的节点。 这是一个单独工作的示例(请注意:我故意省略了部分代码,因为它们在这里并不重要):

 def get_info(self):
     for mainNode in self.mainNodes:
        self.values_list.append([mainNode.get(i) for i in list_of_attributes])

上面的工作很好,因为我在同一函数中开始和结束了所有循环。 但是,如果我开始在另一个文件中遍历self.mainNodes,该如何引用对象“ mainNode”? 有什么办法可以做到:

 def get_info(self):
     self.values_list.append([CURRENT_NODE.get(i) for i in list_of_attributes])

在另一个文件中,我已经声明要遍历self.mainNodes,因此我的插入查询对于每个mainNode都执行一次。

另外,我知道我可以简单地遍历一个文件中的self.mainNodes(就像我在第一个示例中所做的那样),然后在另一个文件中进行插入查询。 但是,我通过调用MySQL的LAST_INSERT_ID()函数将自动递增的主ID重新分配到关系数据库的其他表中,因此我需要遍历每个主节点并依次插入(不一次插入多行)每次执行脚本时成功多次调用LAST_INSERT_ID()。

最后,我无法执行在file2.py中的file1.py中开始循环的函数,因为这将导致模块的周期性依赖关系,并且脚本将中断。

抱歉,如果其中任何一种措辞都很奇怪,我很乐意对问题进行编辑,以便在必要时进行更详细的介绍。 提前致谢。

将要修改的节点添加到输入参数:

def get_info(self,node):
    self.values_list.append([node.get(i) for i in list_of_attributes])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM