私は巨大なXMLファイルを持つ私が構築するアプリケーションのXMLReaderを避けようとしています。 SimpleXMLは書き込みが簡単で、非常に忙しいサーバーでは(メモリとパフォーマンスの問題)をうまく処理する方法があるのだろうかと思いました。 私がやることは、主に検索フォームからそのXMLのデータをエコーすることです。SimpleXMLを使用して巨大なXMLファイルを処理できますが、メモリとパフォーマンスの問題を防ぐにはどうすればよいですか?
答えて
XMLReaderを使用せずに実際にやりたければ、ここで行うことができます。
fopenを使用して、そのファイルのN個のバイトを開いて読み込みます。
難しい部分ですが、完全に実行可能です 何かテキストの真ん中にいる場合は、閉じていないものを閉じて、必要に応じて後戻りすることによって行います。
XMLチャンクが最終的に有効な場合、simplexmLで解析できます。
別のXMLファイル にチャンクまたは保存して、別のチャンクを作成します。
XMLが複雑な場合は、明らかに少し痛いかもしれません。
要約: 独自のカスタム/汚れのないxmlパーサー/フィクサーを作成することで、巨大なXMLファイルを複数の小さなファイルに分割できます。
こんにちは、これは私がXML Parserで試したものです(ここでは、最後のhttp://www.ustrem.org/en/articles/large-xml-files-in-php-en/をご覧ください)。私がテストしたのはXML ParserとSimpleXMLの120MBのファイルで、同じものを出力しています。私はメモリテストを行い、SimpleXMLのメモリが低く、信じられないほど高速であることがわかりました。私が読んだとおり、私は別の結果を期待していたが、これは私が見るものである。 – EnexoOnoma
あなたのファイルが大部分が似ているノードの場合、本の数が多いにもかかわらず書籍のレコード自体が小さい書籍のような大きなリストの場合、XMLReaderを使ってsmauraの答えのバリエーションを使用できます各ノードをXMLストリングに変換し、それをSimpleXMLに渡します。そうすれば、大きなリストにストリーミングソリューションを使用していますが、各レコードを取得すると、SimpleXMLでレコードに簡単にアクセスできる利点があります。
- 1. iPhone SDKを使用して大きなファイルをダウンロードし、メモリ使用の問題を回避するにはどうすればよいですか?
- 2. Javaを使用して大きなXMLファイルを解析するにはどうすればよいですか?
- 3. sleep()を使用すると、大量のPHPメールループでの問題を防ぐことができますか?
- 4. C#で巨大ファイルを処理する
- 5. どのようにJavaの巨大なデータを処理する
- 6. モバイルビジターの訪問を防ぐにはどうすればよいですか?
- 7. JDBCは巨大なデータベースを処理できますか?
- 8. PHPでSimpleXMLを使用してXMLノードを再配置するにはどうすればよいですか?
- 9. FetchExpressionの結果がキャッシュされているように見えますが、どうすればこの問題を防ぐことができますか?
- 10. Rubyで大きなファイルを処理するにはどうすればよいですか?
- 11. .NETベースクラスの使用を防ぐにはどうすればいいですか?
- 12. 巨大なパフォーマンスの低下 - 問題のベクトルですか?
- 13. ファイルハッシュデータベースを使用した京都キャビネットデータベースでは、ファイルサイズが大きくなるのを防ぐにはどうすればよいですか?
- 14. NSDecimalNumberを使用したメモリ管理:タイトなループでのメモリの問題を回避するにはどうすればよいですか?
- 15. HTMLがRazorEngineを使用してリテラル文字列としてレンダリングされています。どうすればこれを防ぐことができますか?
- 16. Scala Streamクラスを使用して大きなCSVファイルを読むにはどうすればよいですか?
- 17. ChromeとFirefoxで大きなマージンの問題を解決するにはどうすればよいですか?
- 18. mongodを使用してutcに日付を保存するときのタイムゾーンの問題を処理するにはどうすればいいですか?
- 19. GAEによるgzipped xmlフィードの解凍を防ぐにはどうすればよいですか?
- 20. Retrofit 2を使用して異なるレスポンスタイプを処理するにはどうすればよいですか?
- 21. レイヤードプロトコルスタックで大きなバッファを処理するにはどうすればよいですか?
- 22. HTMLテキストの孤立を防ぐにはどうすればよいですか?
- 23. SPAMユーザーのサインアップを防ぐにはどうすればよいですか?
- 24. Google Checkoutを使用して送料とVATを処理するにはどうすればよいですか?
- 25. Erlangでメモリ不足がどのように処理されていますか?
- 26. サブスクリプション - 大きなコンテンツとサブスクリプションの量を処理するにはどうすればいいですか?
- 27. 大きなファイルを投稿するときにJerseyクライアントがメモリ不足エラーを発生するのを防ぐ
- 28. 私のシステムトレイアプリでクロススレッドの問題を適切に処理するにはどうすればよいですか?
- 29. 大きなXMLファイルの解析中にPythonのlxmlでXMLSyntaxErrorを処理するにはどうすればよいですか?
- 30. Pythonを使用する際のスペースを防ぐにはどうすればよいですか?
要するに、 'simpleXML'(DOMのような他の文書ベースのパーサと同様)は、読み込み中に常に_entire_ XMLファイルを読み込むため、意味がありません。 XMLReader(ストリームベース)を見てください。 – KingCrunch
なぜXMLReaderを避けようとしていますか?そして、なぜこのXMLを解析していますか?ちょうどいくつかのノードのために? SimpleXMLとXMLReaderは異なる目標とパフォーマンスを持っていますが、同じことを達成できます。 – Planplan
私はいくつかの言葉を誤解しているかもしれません。私は私を助ける多くの事例を見つけることができないので、私はそれを避けようとしています。あなたのコメントを読んで、私はXMLReaderと一緒に行く必要があると思います。 – EnexoOnoma