我正在使用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的需要?剛剛獲取以前的表名和列名?可能某些有效的輸入和預期的輸出會使它更清晰一些。 –