我正在使用 Python 和庫 xml.etree.ElementTree 決議 ARXML 檔案。它讀取除獨立結束標簽之外的所有內容。我需要能夠閱讀結束標簽,因為可能有散布在整個檔案中的注釋。我的目標是準確找到這些注釋在 ARXML 檔案中的位置,因為它們需要被復制到另一個轉換后的檔案中。因此,重要的是我可以確定何時遇到結束標記(以及可能出現在它之后的注釋),以便我知道該注釋的確切位置(它在哪個節點里面)。
這是我正在決議的一個很好的例子:
<item>
<name>
</name> <-- Name module ends here -->
</item> <-- Item1 ends here -->
我讀到可以通過查看是否node.text為無來檢查某物是否是結束標簽。如果是,那么它是一個結束標簽。但是,這僅適用于以下格式的結束標簽:<item name="Pizza" />. 自閉合標簽。
這不適用于僅結束標簽,例如</item>, </a>。
是否有解決方法或方法來讀取這些結束標簽?到目前為止,我正在使用 ElementTree 并使用for child in root.iter().
uj5u.com熱心網友回復:
在構建 DOM 時,關閉標簽不存在。它們只是序列化工件,而不是 DOM 的一部分。
從對當前檔案的粗略閱讀來看,ElementTree 似乎沒有在決議時保留注釋節點的選項。奇怪的是,您可以通過 API創建評論節點,它們將被序列化。但是在決議 XML 時,它會丟棄注釋。
所以看起來最好的選擇可能是 SAX(基于事件)決議,您可以在其中獲得每個事件的回呼,包括開始和結束標簽。這有點復雜,因為“事件”的構成并不總是直觀的。例如,文本節點可能呈現為多個單獨的事件,您必須自己積累。Python有xml.sax模塊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459023.html
