問題タブ [rapidxml]
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.
c++ - C++: RapidXml から文字列を抽出する方法
私の C++ プログラムでは、XML の小さな断片を解析し、いくつかのノードを挿入してから、新しい XML を (できれば としてstd::string
) 抽出したいと考えています。
RapidXmlをお勧めしましたが、XML をテキスト文字列として取得する方法がわかりません。
(ノードとアトリビュートを反復して自分で構築することもできますが、確かに私が見逃しているビルドイン機能があります。)
ありがとうございます。
c++ - c++ rapidxml node_iterator の例?
勧められてからrapidXMLを使い始めました。現在、複数の兄弟を反復処理するには、次のようにします。
基本的なテストとして、正常に動作します。とにかく、これを行うための余分なイテレータクラスのように見える node_iterator に出くわしました。とにかく、私はそれを使用する方法の例を見つけることができなかったので、誰かが私に見せてくれるかどうか疑問に思っていました:)
ありがとう!
c++ - RapidXML、値の読み取りと保存
私は自分自身で RapidXML ソースを調べ、いくつかの値を読み取ることができました。次に、それらを変更して XML ファイルに保存します。
ファイルの解析とポインタの設定
XML からの値の読み取り
値の変更とファイルへの保存
ファイルをバッファに読み込む
ただし、新しい値を保存することはできません。私のコードは、元のファイルを「60」の値で保存するだけで、「10」になるはずです。
Rgdsレイン
c++ - RapidXML文字列の所有権の懸念を修正する方法は?
RapidXMLは、高速で軽量なC ++ XML DOMパーサーですが、いくつかの癖があります。
私の心にこれらの最悪のものはこれです:
3.2文字列の所有権。
RapidXmlによって生成されたノードと属性は、それらの名前と値の文字列を所有していません。それらは単にそれらへのポインタを保持します。
xml_base::name(const Ch *)
つまり、またはxml_base::value(const Ch *)
関数を使用してこれらの値を手動で設定する場合は注意が必要です。渡される文字列の存続期間が少なくともノード/属性の存続期間と同じになるように注意する必要があります。これを実現する最も簡単な方法は、ドキュメントが所有するmemory_poolから文字列を割り当てることです。
memory_pool::allocate_string()
この目的のために関数を使用 してください。
今、私はそれがスピードのためにこのように行われていることを理解しています、しかしこれは自動車事故が起こるのを待っているように感じます。次のコードは無害に見えますが、fooが戻ると、「name」と「value」はスコープ外であるため、ドキュメントは未定義です。
手動で使用するという提案はallocate_string()
機能しますが、忘れがちです。
この問題を回避するためにRapidXMLを「拡張」した人はいますか?
c++ - RapidXML でのコンパイル エラー
私はrapidXMLの初心者ですが、最初の印象は肯定的ではありませんでした。単純なVisual Studio 6 C++ Hello Worldアプリケーションを作成し、RapidXML hppファイルをプロジェクトに追加し、main.cppに次のように置きました:
そして、それはコンパイルされません。RapidXML は Visual Studio 6 で実行できますか? 私が得ているエラーは次のとおりです。
c++ - RapidXml を使用して XML ファイルを解析する方法
C++ で XML ファイルを解析する必要があります。私は調査していて、このための RapidXml ライブラリを見つけました。
について疑問がありdoc.parse<0>(xml)
ます。
.xml ファイルにすることができますか、それとも またはxml
である必要がありますstring
かchar *
?
または、ファイル全体を読み取って char 配列に格納し、そのポインタを関数に渡す必要があると思いますかstring
?char *
コード内の XML ファイルも変更する必要があるため、ファイルを直接使用する方法はありますか。
RapidXml でそれが不可能な場合は、C++ の他の XML ライブラリを提案してください。
ありがとう!!!
アシュド
c - MapViewOfFileがrapidxmlの使用できないポインタを返すのはなぜですか?
提案されているように:私は2ギガより大きいファイルを持っています。次の関数を使用してメモリにマッピングしています。
ptr
を受け入れるrapidxmlに解析しますCh*
。Rapidxmlのドキュメントによるptr
と、変更可能である必要がありますが、タイプであると宣言されているため、char*
これを行うことはできません。プログラムはコンパイルされますが、実行時に次のエラーでクラッシュします:アクセス違反。これは、を解析しているときに発生することがわかりましたchar*
。どうすればこれを回避できますか?
xml - 出力で RapidXML の改行と空白を削除する
print(...) 関数を呼び出して XML を出力するときに、RapidXML が要素タグ間にタブと改行を追加しないようにするにはどうすればよいですか?
c++ - Rapidxml::xml_document の複製
RapidXML xml_document の完全なコピーを取得するにはどうすればよいですか?
clone_node 関数があります。to を使用して既存のドキュメントの完全なコピーを作成する方法
c++ - xml ノードの値が null の場合の RapidXML のバグ
xml のノードの値が null の場合、xml ノードを出力すると、ノードには開始タグがなく、終了タグのみが含まれます。例えば:
test.xml の内容は次のとおりです。
test.xml の期待される内容は
これはrapidxmlのバグですか