2017-12-10 11 views
-1

OMNeT ++シミュレーションでデータを処理するためにXMLファイルを使用したいと思います。マニュアルを読んだ後、私はOMNeT ++ APIを使ってXMLファイルを読む方法を理解しました。しかし、XMLファイルに何かを書き込もうとすると、これは機能しません。次のコードは、私が何をしようとしている示していますOMNeT ++でXML文書を読み書きするにはどうすればよいですか?

cXMLElement *xmlPosture; 
xmlPosture = par("traceFile").xmlValue(); 
cXMLElementList Entities = xmlPostureW->getElementsByTagName("Entity"); 
(*Entities[0]).setAttribute("X_Position", "100"); 
(*Entities[0]).setAttribute("Y_Position", "100"); 
(*Entities[0]).setAttribute("Z_Position", "100"); 

結果のXMLファイルは次のようになります。何らかの理由で

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <Entity id="0" X_Position="250" Y_Position="250" Z_Position="0" Speed="0.1"> 
    </Entity> 
    <Entity id="1" X_Position="250" Y_Position="300" Z_Position="0" Speed="0.1"> 
    </Entity> 
    <Entity id="2" X_Position="250" Y_Position="200" Z_Position="0" Speed="0.1"> 
    </Entity> 
    <Entity id="3" X_Position="200" Y_Position="250" Z_Position="0" Speed="0.1"> 
    </Entity> 
    <Entity id="4" X_Position="100" Y_Position="250" Z_Position="0" Speed="0.1"> 
    </Entity> 
    <Entity id="5" X_Position="150" Y_Position="220" Z_Position="0" Speed="0.1"> 
    </Entity> 
</root> 

、私は私は変化を見ていませんよファイルへの書き込み(上のコードの部分を参照)。私は間違って何をしていますか?

+0

私がしたいのは、上記のxmlサンプルドキュメントの属性のようにxmlファイルを変更することです。私はsetAttribute関数を使用していましたが、それは私を混乱させていませんでした。誰か助けてくれますか? – Adas

+0

それがうまくいかないとか、何かがうまくいかないと言っているだけではありません。あなたが経験している問題とその問題について分かち合うことができることを明示する必要があります。 – Alan

+0

申し訳ありませんが、コードにはエラーも警告もありません。ファイルを開くだけで、要素を取得し、属性を設定します。しかし、コードを実行すると、元のXMLファイルは変更されません。私は新鮮で、エクスプレスについてはごめん。そして、ありがとう。 – Adas

答えて

2

実際にファイルを変更していないという問題があります。単にXML文書の内部表現を変更するだけです。実際にディスクに書き込む必要があります。

質問の文脈を正しく理解していれば、後でXML形式の他のツールで分析できるトレースファイルを生成しようとしています。その場合は、XMLファイルをOMNeT ++モジュールのfinishメソッドでディスクに書き込む必要があります。問題は、OMNeT ++ cXML *クラスを使用してファイルを開くことです。これらは設定目的のみのため、読み取り専用です(例:this entry in the API documentation参照)。

XML書込みを行うライブラリを含めるか、CSVやJSONなどのよりシンプルなフォーマットに切り替えることをお勧めします(個人的にはrapidJSONを使用してJSON形式にエクスポートしますが、 )。 OMNeT ++の統計フレームワークを使ってデータをエクスポートしようとすることもできますが、実際にはメッセージログなどの任意の出力用には設計されていません。

+1

アドバイスありがとうございます!自分のプログラムをデバッグした後で、ディスクに書き戻さずに内部XML文書を修正しただけで、私はあなたにもっと同意することはできません。また、リンクは非常に便利です。 – Adas

関連する問題