2017-02-04 56 views
1

我必須將映射的鍵/值序列化爲XML文件,然後對其進行反序列化。UnknownHostException嘗試讀取XML文件

Map<String,Integer> map = new HashMap<>(); 
// ... 
LinkedList<Element> l = new LinkedList<Element>(); 
Element root = new Element("root"); 
for (String str : map.keySet()) { 
    l.add(new Element(str)); // key 
    l.getLast().appendChild(map.get(str).toString()); // value 
    root.appendChild(l.getLast()); 
} 
Document d = new Document(root); 

BufferedWriter out = new BufferedWriter(new FileWriter("data.xml")); 
out.write(d.toXML()); 
out.close(); 

d = new nu.xom.Builder().build("data.xml"); // ! 
Elements e = d.getRootElement().getChildElements(); 

但是,當我嘗試讀取XML文件,UnknownHostException被套上了標記線。

Exception in thread "main" java.net.UnknownHostException: file 

儘管XML文件已成功創建。格式化的版本看起來像:

<?xml version="1.0"?> 
<root> 
    <through>1</through> 
    <don>1</don> 
    <backed>1</backed> 
    <I>2</I> 
    <asList>1</asList> 
// .... 
</root> 

請問你能解釋我有什麼問題嗎?

+0

你知道什麼'建立()'正在爲參數,其文件名,然後提供完整的文件路徑。 –

+0

你應該關注[this](http://stackoverflow.com/help/someone-answers)。 –

回答

3

據@delephin,它能夠更好地使用build(File in)版本build方法指向的文檔,通過與您的data.xml到相關的File實例您build()方法,如下

d = new nu.xom.Builder().build(new File("data.xml")); 
+0

這樣更好! :) –

+0

@AlastairMcCormack謝謝。 –

1

您需要正確的URL傳遞給build(),這包括本地文件。

可以使用獲得本地文件的網址:

new File(path).toURI().toURL();