7

サーバーサイドプログラミングをCで行うのが好きですが、いくつかのXMLと相互運用する必要があります。

私が書く必要があるのは、C構造体、またはネストされた構造体、およびC構造体の要素を記述する別の構造体(またはネストされた構造体)が与えられた場合に、それをXMLとして吐き出す関数です。また、XMLを読み取り、C構造体の説明と一致することを確認し、C構造体にデータを入力する別の関数。

これは以前にも何度も行われたことは確かですが、XMLに関する情報は他にもたくさんあるので、無関係なものをあまり返さないGoogleクエリを作成することはできません。

私はライブラリを探していません-XMLを解析するための数百行のCコードだけです。

4

3 に答える 3

4

彼は XML パーサーを求めているわけではありません。彼は、複雑な C 構造を XML との間で自動的にシリアル化/非シリアル化するライブラリを求めています (これは明らかに、下にある XML パーサーに依存します)。

libpdelは古いですが、(「構造体」を介して) やりたいことをサポートしています。

于 2011-02-10T21:11:31.453 に答える
2

事前に作成されたライブラリやコードが見つからない場合に実行できる1つの方法は、通常のtoString()関数のようなtoXML()関数を作成することです。次に、XMLを逆シリアル化して構造体に戻すtoStruct(char *)

于 2009-05-08T23:10:50.747 に答える
2

一般的なケースでは、数百行のコードでXMLを解析することはできません。そこにはいくつかのXMLパーサーライブラリがあり、そのうちの海外駐在員が思い浮かびます。ExpatはCで記述されており、Cに適したAPIを備えています。

サポートしているデータ型に精通していないと仮定すると、シリアル化は簡単になる可能性があります。

いずれにせよ、これが頭痛の種となるのは、structレイアウトとXMLスキーマ間の対応の維持です。

エクスパットの実装のイベント駆動型の性質を隠し、DOMツリーのようなものを提示することを目的としたSCEWのようなライブラリを調べることをお勧めします。expatの上にSOAPを実装するさまざまなライブラリもあり、それらは必然的にXMLパケットの内外でのデータのマーシャリングを処理する必要があります。

于 2009-05-09T00:58:39.913 に答える