如何将XML文档导出到文件系统

时间:2018-06-03 14:51:33

标签: java xml parsing

我试图将文本文件转换为xml文件但是在解析时遇到了一些小问题。

这是将txt文件转换为xml的代码。

public class ToXML {

    BufferedReader in;
    StreamResult out;
    TransformerHandler th;
    AttributesImpl atts;

    public static void main(String args[]) {
        new ToXML().doit();
    }

    public void doit() {
        try {
            in = new BufferedReader(new FileReader("E:/Java Codes/JMartin.txt"));
            out = new StreamResult("E:/Java Codes/JMartin2.xml");
            initXML();
            String str;
            while ((str = in.readLine()) != null) {
                process(str);
            }
            in.close();
            closeXML();
        } catch (IOException | ParserConfigurationException | TransformerConfigurationException | SAXException e) {
        }
    }

    public void initXML() throws ParserConfigurationException,
            TransformerConfigurationException, SAXException {
        SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory
                .newInstance();

        th = tf.newTransformerHandler();
        Transformer serializer = th.getTransformer();
        serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
        serializer.setOutputProperty(
                "{http://xml.apache.org/xslt}indent-amount", "4");
        serializer.setOutputProperty(OutputKeys.INDENT, "yes");
        th.setResult(out);
        th.startDocument();
        atts = new AttributesImpl();
        th.startElement("", "", "Author", atts);
    }

    public void process(String s) throws SAXException {
        String[] elements = s.split("<>;");
        atts.clear();
        th.startElement("", "", "Data", atts);
        th.startElement("", "", "AuthorName", atts);
        th.characters(elements[0].toCharArray(), 0, elements[0].length());
        th.endElement("", "", "AuthorName");
        th.endElement("", "", "Data");
    }

    public void closeXML() throws SAXException {
        th.endElement("", "", "Author");
        th.endDocument();
    }
}

在编译期间,代码运行得很好,但是如何将.xml文件保存在我的驱动器中?

有什么想法吗?请帮忙。

1 个答案:

答案 0 :(得分:1)

您可以使用FileWriter将XML文档导出为XML文件。

public void saveTo(Document document, File file) {
  try (Writer writer = new FileWriter(file)) {
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    /*
     * Customize your transformer here:
     * - Indentation
     * - Encoding
     * - ...
     */
    transformer.transform(new DOMSource(document), new StreamResult(writer));
  }
}