100讨论(求)读取远程xml方法并保存在本地以备后用

windhuo 2005-03-07 11:42:40
本人正在开发一个项目,须从远程读取xml文件,以http方式,如读取http://www.a.com/a.xml中的内容,现在本人读下来的内容编码总是用问题,代码如下,生成的文件用UE打开正常,用记事本和IE打开则是乱码,用UE重新保存后便显示正常,请问有没有直接读取远程XML的方法。。。。

java.io.InputStream iUrl;
java.net.URL l_url = new java.net.URL("http://10.13.111.21/xml/p.xml");
java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
l_connection.connect();
iUrl = l_connection.getInputStream();
java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(iUrl));
while ((rLine = l_reader.readLine()) != null) {
bw.write(rLine);
bw.newLine();
}
bw.flush();
bw.close();
fw.close();
...全文
281 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxmzfbdc 2005-03-08
  • 打赏
  • 举报
回复
String file_url="http://10.13.111.21/xml/p.xml";
private void parseDOMCrimson(String file_url)
{
try
{
URL url = new URL(file_url);
URLConnection uc = url.openConnection();
HttpURLConnection connection = (HttpURLConnection) uc;
connection.setDoOutput(true);
connection.setDoInput(true);
InputStream in = connection.getInputStream();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docuBuilder = factory.newDocumentBuilder();
InputSource source = new InputSource(in);
Document document = docuBuilder.parse(source);
NodeList fibonaccis = document.getElementsByTagName("fibonacci");
for (int i = 0; i < fibonaccis.getLength(); i++)
{
Node fibonacci = fibonaccis.item(i);
System.out.println(
fibonacci.getNodeName()
+ " "
+ fibonacci.getNodeType()
+ " "
+ Node.DOCUMENT_NODE);
String name = fibonacci.getNodeName();
Node node = fibonacci.getFirstChild();
String value = node.getNodeValue();
System.out.println("<" + name + " index=" + i + ">" + value + "</" + name + ">");
}
System.out.println(org.apache.xerces.impl.Version.getVersion());
}
catch (IOException io)
{
io.printStackTrace();
}
catch (ParserConfigurationException pce)
{
pce.printStackTrace();
}
catch (SAXException saxe)
{
saxe.printStackTrace();
}
}


取出的值是乱码,可以强制转码:
name = new String(name.getBytes("ISO-8859-1"), "GB2312")
"ISO-8859-1"是源文件的编码方式,随实际情况而定。
windhuo 2005-03-08
  • 打赏
  • 举报
回复
nuoheng(诺恒) 的方法我也试过了,还是不行

dipperstudio(Dipper) 说的方法我也一直在找,但不知道是我没找到还是java没有提供这个功能,不知道有没有那位好心人知道告诉我一下.....
诺恒 2005-03-08
  • 打赏
  • 举报
回复
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(iUrl), "GBK"));

这样就可以编码了
dipperstudio 2005-03-08
  • 打赏
  • 举报
回复
直接读取远程XML的方法很多啊,任何一种网络编程语言都可以实现的
基本上都是用XMLHTTP方法来远程读取,然后可以随你自己实现显示或者保存都可以
我以前写的一个远程RSS读取新闻系统就是这样的原理,不过是ASP的,但是移植到Java也没有问题的
勾玉2004 2005-03-08
  • 打赏
  • 举报
回复
检查一下,可能是远端的XML返回格式有问题
lvyuanfang 2005-03-08
  • 打赏
  • 举报
回复
帮顶
windhuo 2005-03-08
  • 打赏
  • 举报
回复
真的没有人知道吗?....
windhuo 2005-03-08
  • 打赏
  • 举报
回复
问题解决了,感谢大家,特别是zxmzfbdc(也速该把阿秃儿)
散分了.....
windhuo 2005-03-07
  • 打赏
  • 举报
回复
那应该怎么解决哦.....
fmzbj 2005-03-07
  • 打赏
  • 举报
回复
xml文件应该用gbk或者gb2312有编码,我也见过你那样的问题,utf-8时汉字出不来,报错。
windhuo 2005-03-07
  • 打赏
  • 举报
回复
你说的是rLine = new String(rLine.getBytes(),"GB2312")吗?这样我试过不行的
steven_cheng 2005-03-07
  • 打赏
  • 举报
回复
你本地应该是GB2312编码,读到的应该是UNICODE码。你再写入的时候做一下强制转码,转换成GB2312码,试一下。
windhuo 2005-03-07
  • 打赏
  • 举报
回复
是中文乱码,英文正常
steven_cheng 2005-03-07
  • 打赏
  • 举报
回复
是中文有乱码还是英文有乱码?
windhuo 2005-03-07
  • 打赏
  • 举报
回复
晕,怎么无人问津啊,自己顶一下!

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧