古い FrameMaker ドキュメントを XML に変換しています。私の仕事はこれを変換することです:
<?FM MARKER [Index] foo, bar ?>`
これに:
<indexterm>
<primary>foo, bar</primary>
</indexterm>
その部分については(まだ)心配していません。私を困惑させているのは、ProcessingInstruction
sがドキュメント全体にあり、潜在的に任意の要素の下にある可能性があるため、ツリー全体を検索し、それらを見つけて処理できる必要があるということです. を使用して XML ツリー全体を反復処理する方法がわかりませんminidom
。秘密のメソッド/イテレータがありませんか? これは私がこれまで見てきたものです:
Elementtree
には、深さ優先検索という優れたElement.iter()
方法がありますが、s は処理されませんProcessingInstruction
。ProcessingInstruction
minidom
sにはタグ名がないため、 を使用して検索することはできませんgetElementsByTagName
。xml.sax
のContentHandler.processingInstruction
作成にのみ使用されるようProcessingInstruction
です。
独自の深さ優先検索アルゴリズムを作成する以外ProcessingInstruction
に、XML ファイル内の のリストを生成したり、それらの親を特定したりする方法はありますか?