从 TCP 套接字解析 XML 流

2023-12-30

我编写了一个 Ruby 脚本来通过 TCP 套接字连接到 XML 流。我想使用 LibXML 解析此 XML 流)。我的问题是我不知道如何将此流传递给 LibXML。来自 LibXML 文档XML::Document.io(io) http://libxml.rubyforge.org/rdoc/classes/LibXML/XML/Document.html#M000472%20%22LibXML%3aXML%3aDocument%28io%29这似乎是为 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()

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 TCP 套接字解析 XML 流 的相关文章

随机推荐