java 如何远程读取xml文件.

李剑 发布于 2010/01/26 11:03
阅读 7K+
收藏 3
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class XMLTest {
	//filename D:\\SWTdemo\\eg.xml
	private Map<String, String> readXml(String filename) {
		File file = new File(filename);
		SAXReader reader = new SAXReader();
		Map<String, String> map = new HashMap<String, String>();
		try {
			Document doc = reader.read(file);
			Element root = doc.getRootElement();
			List<Element> listmsg = root.elements();
			if(listmsg.size()==0)
				return null;
			for (Element element : listmsg) {
				map.put(element.getName(), element.getText());
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return map;
	}
	public static void main(String[] args) {
		XMLTest xml = new XMLTest();
		Map<String, String> map = xml.readXml("http://127.0.0.1:8983/sparkweb/eg.xml");
		System.out.println("服务器:"+map.get("server"));
	}
}

这个是我的代码.如果传入本地的文件就是正确的.如果我传入一个URL路径的话就会报找不到这个文件.同样的xml文件放的位置不一样.我想问问如果要这样做怎么办.(提示我只能用那样的只能用绝对路径.)

加载中
0
答复哈
答复哈

读取网络上的资源不能这样用File,试试http://www.oschina.net/p/httpclient

0
李剑
李剑

问题我以找到解决的方法.说出来有点丢人.dom4j.有提供一个可以读取远程xml的方法.
方法是read的重载里面.可以传如一个URL路径.上面的File就不需要了.

0
李剑
李剑

 多谢啊.呵呵源码看的不仔细就用了.呵呵.教训啊.浪费社区的空间了.呵呵.

0
leafage
leafage

觉得你根本就没看API:

public Document read(URL url)
              throws DocumentException

Reads a Document from the given URL using SAX

Parameters:
url - URL to read from.
Returns:
the newly created Document instance
Throws:
DocumentException - if an error occurs during parsing.

从API可知:

 Document document = new SAXReader().read("http://www.123.com/bbbbbb.xml");

Document document = new SAXReader().read("C:/test/lch.xml");

都是可以的

返回顶部
顶部