使用Java将TXT转换为XML的简单示例

时间:2014-05-30 09:23:26

标签: java xml

我有一个简单的文本文件,在格式(input.txt)等列表中显示数据。

Example One
Example Two
Example Three
...

我想要做的是使用Java将此文本文件转换为XML文件(output.xml),声明对于每个列表条目,将其放在标记中(例如<tag>Example One</tag>)。我已经对此进行过研究,但是我得到的结果要么与我正在做的事情无关,要么过于复杂化这个简单的例子,要么就我提供的内容或提供的内容没有提供足够的解释。解决方案有效。

有人可以帮我解决我想要完成的事情吗?

非常感谢。

2 个答案:

答案 0 :(得分:4)

在那里,读取文本文件(data.txt)并将其转换为XML文件(data.xml):

import java.io.*;

import org.xml.sax.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.*;

public class ToXML {

    BufferedReader in;
    StreamResult out;
    TransformerHandler th;

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

    public void begin() {
        try {
            in = new BufferedReader(new FileReader("data.txt"));
            out = new StreamResult("data.xml");
            openXml();
            String str;
            while ((str = in.readLine()) != null) {
                process(str);
            }
            in.close();
            closeXml();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void openXml() throws ParserConfigurationException, TransformerConfigurationException, SAXException {

        SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
        th = tf.newTransformerHandler();

        // pretty XML output
        Transformer serializer = th.getTransformer();
        serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
        serializer.setOutputProperty(OutputKeys.INDENT, "yes");

        th.setResult(out);
        th.startDocument();
        th.startElement(null, null, "inserts", null);
    }

    public void process(String s) throws SAXException {
        th.startElement(null, null, "option", null);
        th.characters(s.toCharArray(), 0, s.length());
        th.endElement(null, null, "option");
    }

    public void closeXml() throws SAXException {
        th.endElement(null, null, "inserts");
        th.endDocument();
    }
}

由此:

Example One
Example Two
Example Three

对此:

<?xml version="1.0" encoding="UTF-8"?>
<inserts>
    <option>Example One</option>
    <option>Example Two</option>
    <option>Example Three</option>
</inserts>

信用转到the author of this post。为什么这些例子不能这么简单?

答案 1 :(得分:2)

对于这个简单的事情,逐行读取文件并将转换应用到行并写入output.xml,如下所示:

Open File for reading
Open File for writing.

Loop through Input file {
   String str = <read a line from file>;
   str= str.replaceAll("(.*)","<tag>$1</tag>");
   Write this string to target file.
}

Flush output file.
Close Output file.
Close Input File.

希望这能帮助你朝着正确的方向前进。