我们正在将古老的 FrameMaker 文档转换为 XML。我的工作是转换这个:
<?FM MARKER [Index] foo, bar ?>`
对此:
<indexterm>
<primary>foo, bar</primary>
</indexterm>
我不担心那部分(还);让我难过的是ProcessingInstruction
s 遍布文档并且可能位于任何元素下,因此我需要能够搜索整个树,找到它们,然后处理它们。我无法弄清楚如何使用minidom
. 我错过了一些秘密方法/迭代器吗?这是我到目前为止所看到的:
Elementtree
有很好的Element.iter()
方法,即深度优先搜索,但它不处理ProcessingInstruction
s。ProcessingInstruction
s 没有标签名称,所以我无法使用minidom
's搜索它们getElementsByTagName
。xml.sax
'ContentHandler.processingInstruction
看起来它只用于创建ProcessingInstruction
s。
除了创建我自己的深度优先搜索算法之外,有没有办法ProcessingInstruction
在 XML 文件中生成 s 列表,或者识别它们的父母?