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、这样的报文接收后,如何进行解析,取出相应节点的数据呢?
谢谢
14 个解决方案
#1
解析XML文件 Java提供了四种解析方法 百度下
#2
这个你可以找一些关于dom4j的例子看一下。
#3
string=
要这个干什么?
再说,你的xml不完整啊,没有<? xml version='xxx' encode='xxxx' ?>
要这个干什么?
再说,你的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
我是随便给个例子,不是完整的
#9
可以把String内容放置到一个临时文件,然后解析。
#10
DOM解析
也可以读文件内容转为字符串截取自己想要的数值
也可以读文件内容转为字符串截取自己想要的数值
#11
第一个问题没人回答呢?
#12
第一个不是问题,两种都行,不要用那个string=的东西.
xml要加PI,就是<? xml ... ?>这个,要不然没有字符集容易出问题
xml要加PI,就是<? xml ... ?>这个,要不然没有字符集容易出问题
#13
可以把传过来的流先写成xml再解析
#14
XML报文格式定义中,是没有这个PI的,就是如上的一个XML,然后我根据 请求码 类型,给他做相应处理,再返回一个 XML报文给他。
对于字符集,只要传递的过程双方都约定好编码 比如UTF-8,不就不会出问题了吗?
#1
解析XML文件 Java提供了四种解析方法 百度下
#2
这个你可以找一些关于dom4j的例子看一下。
#3
string=
要这个干什么?
再说,你的xml不完整啊,没有<? xml version='xxx' encode='xxxx' ?>
要这个干什么?
再说,你的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
我是随便给个例子,不是完整的
#9
可以把String内容放置到一个临时文件,然后解析。
#10
DOM解析
也可以读文件内容转为字符串截取自己想要的数值
也可以读文件内容转为字符串截取自己想要的数值
#11
第一个问题没人回答呢?
#12
第一个不是问题,两种都行,不要用那个string=的东西.
xml要加PI,就是<? xml ... ?>这个,要不然没有字符集容易出问题
xml要加PI,就是<? xml ... ?>这个,要不然没有字符集容易出问题
#13
可以把传过来的流先写成xml再解析
#14
XML报文格式定义中,是没有这个PI的,就是如上的一个XML,然后我根据 请求码 类型,给他做相应处理,再返回一个 XML报文给他。
对于字符集,只要传递的过程双方都约定好编码 比如UTF-8,不就不会出问题了吗?