質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2461閲覧

[C++][Qt]XmlをFTPで入出力

退会済みユーザー

退会済みユーザー

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2018/01/15 05:40

編集2018/01/15 06:31

###前提・実現したいこと
ソケットによるFTP通信(バイナリモード)を用いてXmlデータを入出力.
ここで言うXmlデータとは,QDomDocument型を指す.

参考となるサンプルソースやWebサイトを頂けると助かります.
よろしくお願いします.

###サンプルソース
出力予定Xmlファイル

xml

1<root> 2 <test name="A"> 3 <example id="01" val="0"/> 4 </example> 5</root>

出力処理
追記に修正版を記載

c++

1// ファイルオープン・読込 2QDomDocument doc; 3QFile file( "hoge.xml" ); 4 5if( !(file.open(QIODevice::ReadOnly)) ){ 6 // ファイルオープン失敗 7 return -1; 8} 9 10doc.setContent( &file ); 11 12/********** ここから質問内容の処理 **********/ 13 14 // 出力処理 15 // QDomDocument型変数docを投げて,受信側でsave()メソッドを使用できないか 16 17/**************** ここまで *****************/ 18 19return 0;

入力処理

c++

1/********** ここから質問内容の処理 **********/ 2 3// 入力処理 4// QDomDocument型変数docを受け取り,save()メソッドを使用できないか 5 6/**************** ここまで *****************/ 7 8return 0;

###補足情報(言語/FW/ツール等のバージョンなど)
C++ Qt5.8

###追記 2018/01/15 15:10
以下の内容のCSVファイルをXmlに落とし込み,一時的なxmlファイルを出力することなく直接ソケット接続先へ出力できないか.

A,01,0

c++

1// Xmlデータオブジェクト 2QDomDocument doc; 3 4// 要素ノード 5QDomElement root = doc.createElement("root"); 6QDomElement test = doc.createElement("test"); 7QDomElement ex = doc.createElement("example"); 8 9// CSVファイルをXmlへ落とし込む処理 - 実装済み 10 11// 親子関係の整理 12test.appendChild(ex); 13root.appendChild(test); 14doc.appendChild(root); 15 16/********** ここから質問内容の処理 **********/ 17 18 // 出力処理 19 // QDomDocument型変数docを投げて,受信側でsave()メソッドを使用できないか 20 21/**************** ここまで *****************/ 22 23return 0;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問の意図が掴めんのですが、FTP使うならどんなファイルでもかまわんですよね、
FTPはファイル転送プロトコルなんだから。

ファイル: hoge.xml を投げ、受け取った側でQDomDocument::setContent()するんじゃダメなんですか?

投稿2018/01/15 05:55

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/15 06:43

回答ありがとうございます. 説明が足りないために誤解を招く質問になってしまったことをお詫びいたします. 正確には「CSVファイルを出力先ではXmlファイルとして出力できないか」という意味でした. (CSVをFTPでXml出力したい -> Xmlの形に整える関数は実装済み -> Xmlのオブジェクトを投げられないか という飛躍でした.実際にはFTPなんでこの質問自体破綻していますね.お恥ずかしい...) epistemeさんと同じような発想はあったのですが,一度出力用のxmlをつくり出力後に削除,という手順は無駄だと思い質問させていただいた次第です. CSVをXmlへ落とし込む処理は,出力時に呼ばれるクラスの中に定義・実装してあります. 見にくい質問ですいません.よろしくお願いします.
episteme

2018/01/15 06:51

FTPにはこだわってない、ってことですか? QDomDocumentのナカミを埋めるのにsetContentしてますけど、この引数にファイルでなくメモリが指定できるならどってことなさそうですが。
退会済みユーザー

退会済みユーザー

2018/01/15 07:17

FTPでのやりとりが前提です。 入力対象のCSVファイルをXmlファイルとしてFTP通信を利用して出力できないか,ということです.
episteme

2018/01/15 07:21

できるでしょ。暫定的なファイルを作ってすぐ消していいなら。
退会済みユーザー

退会済みユーザー

2018/01/15 07:35

はい,それが「一度出力用のxml(epistemeさんの仰る暫定的なファイル)をつくり出力後に削除,という手順は無駄だと思い質問させていただいた」に繋がります.
episteme

2018/01/15 07:42 編集

えー...でも使うのはFTP( ファイル転送プロトコル)なんでしょ? ファイルが残らんなら転送プロトコルちゃうやん。
退会済みユーザー

退会済みユーザー

2018/01/15 07:58

>えー...でも使うのはFTP( ファイル転送プロトコル)なんでしょ? そうですね. 仰るとおりFTPにこだわるのであれば,「暫定Xmlファイルを作ってFTP通信で受け側へ出力後,暫定Xmlファイルは消す」というのが正しいですね. 回答ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問