0

次のような簡単な関数を作成したいと思います。

vector <User> convertXMLDataToUserList (string xmlData) { …. }

xmlDataが次のようなものであるとしましょう。

<users>
    <user>
        <firstname>ABC</firstname>
        <lastname>DEF</lastname>
        <!-- …… other attributes -->
    </user>
    <user>
        <firstname>ABC</firstname>
        <lastname>DEF</lastname>
        <!-- …… other attributes -->
    </user>
    <!-- …… More users -->
</users>

これらのxmlDataを解析してUserオブジェクトのコレクションにする必要があります。これを処理するためにQtXMLライブラリを使用したいと思います。DOMとSAXのどちらのXML解析アプローチがこれを処理するのに適していますか?それはなぜですか?

もちろん、xmlデータの内容は上記のようにユーザー属性に限定されませんが、他のさまざまな要素を含めることもできます。xmlデータをユーザー定義オブジェクトに解析するための例/チュートリアルリンクは、(QtXMLライブラリを使用して)非常に役立ちます。

4

1 に答える 1

2

最初にこれを読んで、それに応じて使用したいものを選択してください

XML 解析 火曜日, 11 月 6, 2012 · Android プロジェクト, dom 解析, dom 解析コード, 解析, 応答解析, sax 解析, sax 解析コード, ソース コード, Web サービス コード, Web サービス解析, xml, xml 解析, xmlpull に投稿解析中

JAXP:

JAXP は、XML 処理用の Java API の略です。w3cからの仕様です。JAXP は SUN の API です。

JAXP api を使用すると、xml ドキュメントを 2 つの方法で処理できます。DOM: 処理前に xml ドキュメント全体をメモリに格納します。より多くのメモリを占有します。任意の方向にトラバースします。ツリー データ構造

DOM を操作する手順:

  1. documentBuilderFactory を作成する

    DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();

  2. DocumentBuilder の作成

    DocumentBuilder builder=factory. newDocumentBuilder();

    1. 入力ストリームを取得 ClassLoader cls=DomReader.class.getClassLoader(); InputStream is=cls.getResourceAsStream("xml ファイル"); 4. XML ファイルを解析し、DocumentBuilder オブジェクトの parse メソッドを呼び出して Document オブジェクトを取得します。ドキュメント document=builder.parse(is); 5. ドキュメント オブジェクトを使用して dom ツリーをトラバースします。SAX: 単純な xml 解析。ノードごとに解析します トラバースは上から下へ メモリ使用量が少ない sax ではバック ナビゲーションができません。

    //必要なハンドラの実装 public class SaxParse extends DefaultHandler{ } //saxParserFactory の新しいインスタンス SAXParserFactory factory=SAXParserFactory.newInstance(); //SAX パーサーの新しいインスタンス SAXParser saxparser=factory.newSAXParser(); //xml文書の解析 SAXParser.parse(new File(解析対象ファイル), new SAXXMLParserImpl());

于 2012-11-09T09:33:32.207 に答える