xml解析首先想到了dom4j 当初学的时候 只知道用dom4j就可以解决大部分问题,而且demo也很简单
实战过程中发现dom4j在读取本地xml文件的时候 只用调用read()这个方法 里边传入本地xml文件地址 就可以获取了一个document对象
后来我把url改成一个借口 类似 http://123.150.41.139:9191/tradeweb/hq.jsp 这样的形式
发现报嵌套异常,大概意思是读xml格式不对 百度了好久发现 是已经读取了一边文件 第二遍读取的时候读取位置不对导致的。
后来发现 这给我陷入了一个误区
仔细研究了下http参数 发现
发现请求参数要修改一下才行
GetMethod method = new GetMethod(url);
method.addRequestHeader("Accept-Encoding", "gzip");
注意这个gzip 原来为了保证传输速度,就把压缩的数据传送过来这边要解析
所以现在的问题 变成了java怎么解析远程的gzip包的形式
这个时候 采用了
HttpClient client = new HttpClient();// 生成执行get方法的客户端实例
client.executeMethod(method);
InputStream in = method.getResponseBodyAsStream();
这个方法
然后发现获取的数据是不正确的,数据大小只有全部数据的部分。而且似乎每次查询获得的数据大小都不同
第一个反应就是是不是 把读取的东西放到 buffer的时候 buffer太小导致的
可是把已经把buffer设置成惊人的1M仍然不行
这个时候仿佛看到了可能是 传递过来的数据是好几行 读取的时候只读取一行所致
写一个for循环 就可以了
最后要注意的是编码的问题
上代码
发现最近写的代码 很不规范啊
**************************************************
代码做了进一步修正 发现 这个方法更好用