从TCP套接字解析XML流

时间:2012-06-12 17:29:25

标签: ruby-on-rails-3 xml-parsing

我编写了一个Ruby脚本,通过TCP套接字连接到XML流。我想使用LibXML解析这个XML流。我的问题是我无法弄清楚如何将此流传递给LibXML。从LibXML文档XML::Document.io(io)来看,这似乎是针对HTTP设置的,而不是TCP套接字。有关如何包装我的TCP套接字的任何帮助,以便LibXML可以使用它吗?或者是否有更好的方法从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()

0 个答案:

没有答案