6

SaxとDomの違いは、Xmlの解析に関してはかなり重要ですが、作成するのはどうでしょうか。Saxを使用して新しいXmlを作成する方法もありますか、またはプログラムのデータに基づいて新しいXmlファイルを作成する場合は、DOMを使用する必要がありますか?

ありがとう

4

9 に答える 9

7

SAXは、ウィキペディアを引用しています:

SAX (Simple API for XML)は、XML用のシリアルアクセスパーサーAPIです。
SAXは、XMLドキュメントからデータを読み取るためのメカニズムを提供します。

つまり、SAXはXMLドキュメントの読み取りに最適ですが、XMLドキュメントを作成する場合は、おそらくDOMを使用することになります。

于 2010-02-25T07:37:46.733 に答える
4

SAXを使用してXMLを作成できます。以下を参照してください。

http://code.google.com/p/jlibs/wiki/XMLDocument

Javaです。ただし、C++でも同じことができます。

于 2010-02-25T08:14:53.430 に答える
2
  • DOMは、データが便利なAPIを使用してメモリに収まる場合に使用されます。
  • SAXを使用すると、大量のデータを書き込むことができ、SAXはより高いパフォーマンスも提供します。

また、SAXパーサーとDOMパーサーの違いに興味があるかもしれません

DOMとSAXが試されました

于 2010-02-25T07:39:56.570 に答える
2

SAXは、XMLドキュメントを書き込むためのものではなく、読み取るためのものです。

反対側のDOMは、メモリ内の構造とXMLドキュメント間のマッピングを作成することを目的としています。

メモリ内のデータ用に独自のデータ構造がすでにある場合(これは、処理用のDOM構造よりもはるかに便利です)、DOMデータ構造を作成すると、データを複製することになります。大きなデータがある場合、それはあなたが望むものではないかもしれません。さらに、DOM構造をXMLに書き込む前に完全に作成する必要があり、アプリケーションに必要なメモリサイズが2倍になります。さらに、処理にレイテンシが発生します。

XMLドキュメントの作成に役立つライブラリについてはわかりませんが、独自のデータ構造を持つSAXをすでに使用している場合は、DOMを気にする必要はありません。

于 2010-02-25T08:10:52.747 に答える
1

DOMは、ドキュメントを作成するための自然な選択です。

于 2010-02-25T07:31:46.680 に答える
1

SAXスタイルのライティングAPIは見たことがありません。読み取り専用です。オプションを作成するためのオプションは、DOMとさまざまな非標準化ビルダーAPI(DOMよりもはるかに便利な場合が多い)です。標準化されていないAPIは言語/ライブラリごとに異なりますが、たとえばBuilderforRubyを参照してください。また、演算子のオーバーロードを使用してC ++用の同様のAPIを作成しました:(例は可能なAPIをテストしているだけで、実際には何もしません)

#include <string>

struct XMLBuilder {
  XMLBuilder& operator[](std::string const& elemName) { return *this; }
  XMLBuilder& operator()(std::string const& attrName, std::string const& attrValue) { return *this; }
  XMLBuilder& operator()(std::string const& innerText) { return *this; }
  XMLBuilder& operator()(XMLBuilder const& innerDoc) { return *this; }
};

int main() {
  XMLBuilder()
    ["contact"](XMLBuilder()
      ["name"]("Patrick Hines")
      ["phone"]("type", "home")("206-555-0144")
      ["phone"]("type", "work")("425-555-0145")
      ["address"](XMLBuilder()
        ["street"]("...")
        ["zip"]("12345")
      )
    )
  ;
}
于 2010-02-25T07:43:03.167 に答える
1

printfを使用して単純なXMLを作成することもありますが、通常は、CodeSynthesisXSDなどのXMLバインディングツールを使用する価値があります。これにより、XSDに基づいてクラス階層が作成されます。オブジェクト階層にデータを入力するだけで、XMLが作成されます。

このようにして、XMLが適切に形成され、有効であるかどうかの静的チェックを取得します。これは、バグを早期に発見するのに役立ちます。

JAXBまたはJava用の同様のツールを使用したことがある場合、それはほとんど同じことです。

于 2010-02-25T12:01:15.460 に答える
0

新しいXMLの作成には常にDOMを使用してください...読む目的ではSAXをお勧めします。

于 2013-03-09T18:32:35.653 に答える
0

あなたの言語/プラットフォームで.NETのXmlWriterに相当するものを見つけてみることができます。

于 2010-07-02T22:55:48.100 に答える