我已经使用JAVA和Netty实现了一个TCP套接字,我可以从客户端接收字符串。 现在我还需要接受基于XML的字符串,并且不太确定我可以使用哪种分隔符。目前我有以下实施。
pipeline.addLast(new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
这样就可以逐行读取XML,这很明显。现在我怎么能告诉Netty读取整个XML字符串?我正在寻找某种xmlDelimiter。 有人可以帮助我吗?
由于
答案 0 :(得分:0)
这是发送方和接收方必须达成一致的协议问题。一个真实的例子是NETCONF(用于配置网络设备)。 NETCONF将XML用于协议操作和数据编码,并且需要一种用于分隔单个XML消息的机制。规范的第一个版本将字符串]]>]]>
定义为分隔符。一系列XML消息可以像这样消息:
<rpc message-id="1"> ... </rpc>
]]>]]>
<rpc message-id="2"> ... </rpc>
]]>]]>
后来意识到这个字符串可能合法存在于XML属性和注释中,为什么规范的更高版本定义了一个完全不同的基于长度编码块的框架机制,就像HTTP分块机制一样。
如果您可以控制客户端及其产生的内容,那么基于分隔符的简单方法(如原始的NETCONF解决方案)应该可以正常工作。