我正在使用lxml来处理在xml文件中表示的dbschema。它看起来像这样:我可以取消引用lxml.etree.AncestorsIterator吗?
<Tables>
<Table name = "table1">
<Columns>
<Column name="COL1">...</Column>
<Column name="COL2">...
<References>
<Reference>TABLENAME</Reference>
</References>
</Column>
</Table>
...
</Tables>
当前我想查看引用,并获取这些引用的表和列名称。以下作品:
refiter = mytree.iter("Reference")
for r in refiter:
nameiter =r.iterancestors("Table")
for n in nameiter:
tablename = .get("name")
我不喜欢这样的解决方案,因为我知道我的nameiter只能遍历一个元素 - 它只有一个父“表”。看来在Python中我只能在循环中使用迭代器。但我觉得有点傻。我知道我只有一个祖先“表”。我可以直接取消引用迭代器吗?或者是否有另外一种方法来获取这种更适合的信息?
我不太明白你想要什么,什么是*可我取迭代器直接不知何故?*是什么意思? ''//引用/祖先::表/ @名称| //引用/祖先::列/ @名称“)'会在单个查询中得到表名和列名 –
我的母语是C++,所以当我错误地使用了另一种语言的词汇,我倾向于使用C++的单词,并希望它们以可理解的方式进行映射。在C++中,如果我有第一个元素的迭代器,我可以'derefrence' - 访问这个迭代器直接指向的对象,所以我可以跳过循环遍历的循环,我尝试了你的查询,但是恐怕它的正确用法超出了我的意思,我得到了所有表和列名的列表 – Spacemoose
您是否想要删除名称中'for n的需要?刚刚获取以前的表名和列名?可能某些有效的输入和预期的输出会使它更清晰一些。 –