問題タブ [iterparse]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - lxml.etree iterparse() および要素の完全な解析
次のようなノードを含む XML ファイルがあります。
lxml.etree.iterparse() を使用してツリーを繰り返し解析しています。各 trkpt 要素の子をループして、子ノードのテキスト値を出力したいと考えています。例えば
問題は、この段階ではノードにテキストがないため、印刷の出力が「なし」になることです。
「print child.text」ステートメントを「print etree.tostring(child)」に置き換えることでこれを検証しました。出力は次のようになります
ドキュメントによると、「要素のテキスト、テール、および子は、開始イベントを受け取ったときにまだ存在しているとは限らないことに注意してください。要素が完全に解析されたことを保証するのは、終了イベントだけです。」
したがって、for ループをこれに変更しました。'if event == "end":' ステートメントに注意してください。
しかし、私はまだ同じ結果を得ています。どんな助けでも大歓迎です。
python - この OpenStreetMap ツリーの一部の要素が iterparse によってスキップされるのはなぜですか?
小さな地域をキャプチャした OSM ファイルがあります。 http://pastebin.com/xeWJsPeY
多くの余分な解析を行う Python コードがありますが、主な問題の例を以下に示します。
ここや他の場所で、特定のエントリのタグが欠落していることに気付きました (ここで、tag は のような要素です。私が見る限り、 <tag k="highway" v="residential" />
すべての要素が正しく読み取られました。<nd .../>
ファイルを処理するときに気付いたもう 1 つのことは、タグtostring()
付きの要素で使用'way'
すると、要素の読み取りにエラーがある場合<tag .../>
、末尾に改行が追加されないことです。たとえば、実行中
<tag .../>
要素が欠落しているエントリの出力は次のとおりです。
うまく形成されたものに対して、
ここで起こっている問題は何ですか?
python - lxml を使用して大きな xml ファイルを変更する
言語:- Python 2.7.6
ファイルサイズ:- 1.5 GB
XML 形式
私はしなければならない
A) すべてのノードを読み取る<product>
B) これらのノードの一部を削除します (<id>
属性のテキストが python set() にある場合)
C) いくつかのノードを更新/変更します (<id>
属性のテキストが python dict にある場合)
D)いくつかの新しいノードを追加/書き込みます
問題は、私の XML ファイルが巨大であることです (約 1.5 GB )。私はいくつかの調査を行い、これらすべての目的に lxml を使用することにしました。
iterparse() を element.clear() と一緒に使用してこれを達成しようとしています。これは、すべてのメモリを消費しないためです。
注:- XML ファイルの 1 回のスキャンでこれら 4 つのタスクをすべて達成したい
質問
1) ファイルの 1 回のスキャンでこれらすべてを達成できますか?
2) はいの場合、処理中の要素ノードを削除および更新する方法を教えてください。
3) 代わりに tree.xpath() を使用する必要がありますか? はいの場合、1.5 GB のファイルにどれくらいのメモリが消費されるか、または iterparse() と同じように機能しますか?
私はPythonの経験があまりありません。私は Java 出身です。
python - 印刷された xml データのエンコーディングを変更し、名前空間を削除するにはどうすればよいですか?
複数の xml ファイルから多くの情報を取得する必要があります。Webscraper を作成しようとしていますが、すべての名前空間を削除している間にエンコーディングに問題があります (コードを参照)。xml ファイルの内容はデンマーク語で書かれており、特殊文字 "æøå" が含まれています。
名前空間を削除しながら、印刷された xml データのファイル エンコーディングを変更するにはどうすればよいですか?
root.findtext("loremIpsum/loremIpsum")
特殊文字「ø」の場合の現在の印刷出力:
期待される出力:
python - Python XML iterparse() 名前空間
この投稿によると、XML ファイルを正常に解析し、そのコンテンツを読み取ることができます。ただし、名前空間を追加すると、すべてがうまくいきません。
次の XML を考えてみましょう。
私の iterparse は次のようになります。
私はいくつかの例を見つけましたが、正直なところ、私はそれらをよく理解しておらず、この問題を解決する方法がわかりません.
python - iterparseを使用してxmlで開始要素名を見つける方法
次のサンプルxmlがあります
そして、python iter parseを使用してxmlから境界とノードを抽出したい次のコードスニペットを試しました
しかし、境界とノードを抽出できません...何が欠けていますか?