`
andrii
  • 浏览: 63302 次
  • 性别: Icon_minigender_1
  • 来自: 地球
社区版块
存档分类
最新评论

关于XML的传输

阅读更多

        很是郁闷,之前做的简单网络聊天系统的传输协议是我自己随便编写的,一看就觉得不规范,更觉得不爽。

        对于一个程序员来说应该是追求完美的,我好象也是一个追求完美的人。于是我想到用XML来传输我每次发送的信息。我用程序来创建一个XML文件,然后通过Socket提供的输出流将XML传输出去,传输方法的代码如下。但是在接收的时候却出了问题

 

java 代码

 

  1. public void send(OutputStream os){   
  2.   Document doc ;   
  3.   Element stus;   
  4.   Element stu;   
  5.   Element name;   
  6.   Element age;   
  7.   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
  8.      
  9.   try {   
  10.    DocumentBuilder db = dbf.newDocumentBuilder();   
  11.       
  12.    doc = db.newDocument();   
  13.       
  14.    stus = doc.createElement("stusn");   
  15.   
  16.    stu = doc.createElement("stu");   
  17.   
  18.    name = doc.createElement("name");   
  19.    name.appendChild(doc.createTextNode(""));   
  20.       
  21.    age = doc.createElement("age");   
  22.    age.appendChild(doc.createTextNode("25"));   
  23.       
  24.    stu.appendChild(name);   
  25.    stu.appendChild(age);   
  26.       
  27.    stus.setAttribute("nation""china");   
  28.    stus.appendChild(stu);   
  29.       
  30.    doc.appendChild(stus);   
  31.       
  32.    TransformerFactory tf = TransformerFactory.newInstance();   
  33.       
  34.    Transformer ts = tf.newTransformer();   
  35. //   ts.transform(new DOMSource(doc), new StreamResult(new FileOutputStream("D:/test.xml")));   
  36.    ts.transform(new DOMSource(doc), new StreamResult(os));   
  37.       
  38.   } catch (Exception e) {   
  39.    // TODO Auto-generated catch block   
  40.    e.printStackTrace();   
  41.   }   
  42.  }   
  43.   

我在这个方法里传输的参数是一个Socket提供的输出流。然后在服务器端接收这个流对象,并对这个流对象进行解析,代码如下。

java 代码
  1. ServerSocket ss = new ServerSocket(7777);   
  2.   System.out.println("服务器已经启动......");   
  3.   Socket so = ss.accept();   
  4.   
  5. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
  6.   
  7. DocumentBuilder db = dbf.newDocumentBuilder();   
  8.   
  9. Document doc = db.parse(so.getInputStream());   
  10.   

当服务器接收到客户端的Socket以后开始解析doc文档对象。doc文档对象要解析的是从服务器端的Socket获得的输入流,但是我运行服务器端,在运行客户端以后,程序却停在了下面的代码这一行

Document doc = db.parse(so.getInputStream()); 

真不知道为什么?程序执行到上面一行以后Socket的输入流已经有数据了,为什么还停在这里呢?希望那位迷津啊

分享到:
评论

相关推荐

    XML.zip_XML传输

    在“XML.zip_XML传输”这个主题中,我们主要关注的是XML在文件传输中的应用。虽然XML并不常见于直接作为传输协议,但它在数据交换中扮演着重要角色,尤其是在Web服务和跨平台通信中。 XML文件结构清晰,易于理解和...

    基于XML的移动数据传输机制.pdf

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而不是显示数据。在移动设备领域,XML的应用尤其重要,因为它提供了结构化数据的标准化表示方式,使得不同平台和系统之间...

    linux下c语言实现xml传输方式的即时通讯

    在Linux环境下,使用C语言实现XML传输方式的即时通讯是一个涉及多方面技术栈的项目。以下将详细解析这个主题中的关键知识点。 首先,C语言是系统级编程的基础,它的低级特性和高效性能使得它非常适合在Linux这样的...

    feign以XML格式传输-技术点eureka-feign-jackson.zip

    在"feign以XML格式传输-技术点eureka-feign-jackson.zip"这个项目中,我们关注的核心知识点是如何在Feign客户端中使用XML进行数据传输,并结合Jackson库将Java对象转换为XML格式。 首先,让我们深入理解Eureka。...

    SaxParser1.rar_Parser_xml 传输

    在实际应用中,使用SAX解析器进行XML传输时,通常会创建一个SAX事件处理器(ContentHandler),该处理器会接收并处理由解析器生成的事件。例如,当遇到XML的开始元素时,处理器可能会创建一个新的对象来表示这个元素...

    标记语言xml课件宗旨是传输数据

    例如,在给定的“XMLppt”文件中,可能包含了关于XML的演示文稿,详细讲解了XML的基本概念、语法、解析方法以及XML在实际项目中的应用案例。通过学习这样的课件,我们可以深入理解XML的工作原理,并提升处理结构化...

    应用socket编程来进行xml的传输已经解析

    总结,XML传输结合Socket编程可以实现高效、自定义的网络通信。理解XML的结构和解析机制,掌握Socket的基本操作,以及合理选择数据压缩和解析策略,是实现这一技术的关键。在实际应用中,还需注意性能优化、错误处理...

    ajax的xml格式传输.rar

    对于XML传输,数据类型通常是"application/xml"。 当请求被发送后,Servlet在服务器端接收到请求,处理业务逻辑,并生成一个XML响应。这个响应可以通过XMLHttpRequest对象的`responseXML`属性获取。在JavaScript中...

    ajax传输xml

    ajax传输xml

    HTTP协议下xml 加密传输

    然而,XML数据中可能包含敏感信息,如商业数据、个人信息等,因此在传输过程中必须进行加密,以确保数据的安全性。本文将详细介绍如何在HTTP协议下实现XML的加密传输。 1. **XML加密原理**: XML加密是通过使用...

    word与xml的转换传输

    在IT行业中,Word与XML之间的转换传输是一种常见的数据处理需求,尤其在文档处理、数据交换和格式转换场景中。XML(可扩展标记语言)是一种结构化的数据存储格式,具有良好的可读性和机器可解析性,而Word则是常用的...

    java 对象的xml串行化 实现网络间的类信息的传输

    总之,Java对象的XML串行化是Java开发中的一项重要技术,它通过XStream等库实现了Java对象与XML数据之间的灵活转换,从而在网络通信和分布式系统中实现了类信息的有效传输。在实际项目中,合理利用这项技术可以提高...

    用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC).

    本文将深入探讨如何使用Java来实现基于SOAP的XML文档网络传输以及远程过程调用(RPC)。这是一项关键的技术,它允许不同系统间的无缝交互,即使这些系统采用不同的编程语言和平台。 SOAP是一种基于XML的协议,主要...

    java 中HttpClient传输xml字符串实例详解

    在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、Commons Lang以及其他的辅助库。以下是POM文件中的依赖配置: ```xml <!-- ....

    xml 传输demo323232

    xml demo

    xml操作xml操作xml操作xml操作xml操作

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它在IT行业中广泛应用,特别是在数据交换、配置文件、文档结构等方面。这里提到的"xml操作xml操作xml操作xml操作xml操作"显然是指对XML文档...

    c#操作XML 读取、生成,WEBSERVICE接口

    XML(eXtensible Markup Language)则是一种用于存储和传输数据的标记语言,其结构化特性使得它在跨平台的数据交换中非常有用。本教程将深入探讨如何在C#中操作XML,包括读取和生成XML文档,并利用Web Service接口...

    XML相关的几个网址

    XML设计的主要目标是传输和存储数据,而不是显示数据。与HTML不同,HTML主要用于呈现网页,而XML提供了一种结构化的方式来组织数据,使得数据更容易被机器理解和处理。XML文档由一系列元素构成,每个元素可以包含...

    pugixml读写XML示例

    XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它以人类可读的形式定义了数据结构,并且被广泛应用于网络服务、配置文件和数据交换等领域。 pugixml库主要包含两个核心类:`xml_...

Global site tag (gtag.js) - Google Analytics