我对XML报文不是很了解,
1、请问所谓XML报文,是否就是把XML文件一行一行的全部拼起来,拼成一个大string,然后通过socket发送?
例如,要传送如下:
<Request ID=”6位请求码”>
<Head>
<Action>101<Action>
<SenderID>博卡</SenderID>
<ReceiverID>通联</ReceiverID>
<SendTime>发送时间</SendTime>
</Head>转换成‘XML报文’就是 string=<Request ID=”6位请求码”><Head><Action>101<Action><SenderID>博卡</SenderID><ReceiverID>通联</ReceiverID><SendTime>发送时间</SendTime></Head>是这样吧?2、这样的报文接收后,如何进行解析,取出相应节点的数据呢?谢谢

解决方案 »

  1.   

    解析XML文件 Java提供了四种解析方法 百度下
      

  2.   

    这个你可以找一些关于dom4j的例子看一下。
      

  3.   

    string= 
    要这个干什么?再说,你的xml不完整啊,没有<? xml version='xxx' encode='xxxx' ?>
      

  4.   

    拼成string来解析,不太现实吧
    应该有其他的开源组件可以用吧
      

  5.   

    四种方式对xml的操作 http://zhoujingxian.javaeye.com/blog/438750
      

  6.   

    给你贴个例子
    ==================jsp====================
    <%@ page language="java" import="java.util.*,javax.xml.parsers.*,org.w3c.dom.*,java.io.*,com.controller.*" pageEncoding="utf-8"%>
    <%
    String xmlString = "c:\test\test.xml";
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    String xml = xmlString;//application.getRealPath("user.xml");   
    Document doc = db.parse(new File(xml));
    doc.normalize();
    Element root = doc.getDocumentElement();
    NodeList users= root.getElementsByTagName("user");   
    for (int i = 0; i < users.getLength(); i++) {
    Element user = (Element) users.item(i);
    %>
    <tr>
    <td>< %=user.getElementsByTagName("id").item(0).getFirstChild().getNodeValue()%></td>
    <td>< %=user.getElementsByTagName("firstName").item(0).getFirstChild().getNodeValue()%></td>
    <td>< %=user.getElementsByTagName("lastName").item(0).getFirstChild().getNodeValue()%></td>
    <td>< %=user.getElementsByTagName("password").item(0).getFirstChild().getNodeValue()%></td></tr>
    < %
    }
    %>==================XML====================<users>
     <user>
      <id>1</id>
      <firstname>ddfdfd</firstname>
      <lastname>ttttt</lastname>
      <password>123123</password>
     </user>
     <user>
      <id>2</id>
      <firstname>ddd</firstname>
      <lastname>sum</lastname>
      <password>123456</password>
     </user>
    </users>
      

  7.   


    单纯解析xml文件我知道,我是说解析socket传递过来的 XML报文
      

  8.   


    可以把String内容放置到一个临时文件,然后解析。
      

  9.   

    DOM解析
    也可以读文件内容转为字符串截取自己想要的数值
      

  10.   

    第一个不是问题,两种都行,不要用那个string=的东西.
    xml要加PI,就是<? xml ... ?>这个,要不然没有字符集容易出问题
      

  11.   

    可以把传过来的流先写成xml再解析
      

  12.   

    XML报文格式定义中,是没有这个PI的,就是如上的一个XML,然后我根据 请求码 类型,给他做相应处理,再返回一个 XML报文给他。对于字符集,只要传递的过程双方都约定好编码 比如UTF-8,不就不会出问题了吗?