2

TCP ソケットを介して XML ストリームに接続する Ruby スクリプトを作成しました。この XML ストリームを LibXML を使用して解析したい)。私の問題は、このストリームを LibXML に渡す方法がわからないことです。LibXML ドキュメントXML::Document.io(io)から、これは TCP ソケットではなく、HTTP 用に設定されているようです。LibXML で使用できるように TCP ソケットをラップする方法に関するヘルプはありますか? または、TCP ソケットからこの XML ストリームを解析するより良い方法はありますか? 私は今、Ruby を学んでいるので、以下のコードは私が認証した方法とは異なります。stackoverflow に関する他の質問に基づいて、LibXML パーサーに送信する前に、完全な XML (適切な終了タグ) があることを確認する必要があるようです。前もって感謝します。

これが私がこれまでに持っているものです:

   require 'socket'
   require 'timeout'

   username = "username\r\n"
   password = "password\r\n"
   port = 4500
   server = 'xmlfeed.website.com'

   tcp_client = TCPSocket.new(server, port)


   all_data = []
   value = 0
   while true
     partial_data = tcp_client.recv(1012)

     if partial_data.length == 0
       break
     end
     all_data << partial_data
     puts(all_data)
     if value == 0
           tcp_client.puts(username)
           value = 1
     end
     if value == 1
           tcp_client.puts(password)
           value = 2
     end
     if all_data.to_s.chomp.casecmp( "Starting Feed")
           value = 3
           puts "Begin the feed"
     end
     if value == 3
           # Parse the data using LibXML
           # this is the part I'm not sure how to approach
           puts(all_data)
    end
   end
   tcp_client.close

   puts all_data.join()
4

0 に答える 0