2011-08-18 60 views
1

我发现并遵循了一个来自Stackoverflow的示例(http://stackoverflow.com/questions/2310139/how-to-read-xml-response-from-a-url- in-java)如何从URL读取XML文件(正如您可以在我的代码中看到的那样)。我唯一的麻烦是,现在我有了读取XML的程序,我该如何获得它来存储它?例如,我是否可以将信息保存到项目中内置的XML文件中(如果可能,这对我来说是最好的解决方案)?比如,举个例子,我在项目中内置了一个空白的XML文件。程序运行时,从URL读取XML代码,并将其全部存储到预先构建的空白XML文件中。我可以这样做吗?在线阅读XML和存储它(使用Java)

如果我听起来令人困惑或不清楚任何事情,只是要求我澄清我在找什么。

这里是我的代码,如果你想看看我到目前为止有:

package xml.parsing.example; 

import java.io.IOException; 
import java.net.URL; 
import java.net.URLConnection; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.xml.sax.SAXException; 

public class XmlParser { 
    public static void main (String[] args) throws IOException, ParserConfigurationException, SAXException, TransformerException { 
     URL url = new URL("http://totheriver.com/learn/xml/code/employees.xml"); 
     URLConnection conn = url.openConnection(); 

     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = factory.newDocumentBuilder(); 
     Document doc = builder.parse(conn.getInputStream()); 

     TransformerFactory tfactory = TransformerFactory.newInstance(); 
     Transformer xform = tfactory.newTransformer(); 

     // that’s the default xform; use a stylesheet to get a real one 
     xform.transform(new DOMSource(doc), new StreamResult(System.out)); 
    } 
} 
+0

你已经写变换输出到'System.out',为什么你就不能代替一个'StreamResult(文件...)'? –

+0

我还是一个新手,所以我不知道那是/我该如何编写代码。如果你能够在这个问题的答案中显示出你的意思,我将不胜感激!这听起来像我不会错过太多。 – Mxyk

回答

3

很简单:

File myOutput = new File("c:\\myDirectory\\myOutput.xml"); 
xform.transform(new DOMSource(doc), new StreamResult(myOutput)); 
+0

太棒了!这将适用于这个应用程序,但我应该提到,最终我将有一个Android应用程序从URL读取XML。有什么办法可以做到这一点,只有将它直接保存到项目的资源文件夹?如果您使用的是Android手机,则显然无法将文件保存到计算机目录:-P。 – Mxyk

+0

我对Android没有任何了解,但是对于输出文件应该有一个等效的表达式,可以将它保存到需要的任何位置。 –

+0

好吧,就像Java有文件夹一样(如src,Java文件在哪里),Android程序只有一个名为“resources”的文件夹,这是我想要保存文件的地方。这是否有帮助,或者你仍然不知道如何去做这件事? – Mxyk

0

This page有如何将DOM对象序列化到一个整齐地格式化XML文件中的一些很好的例子。

+0

这似乎或多或少只是如何打印我的代码已经完成的XML文件。我想知道如何去储存它。 – Mxyk