我有一个简单的文本文件,在格式(input.txt)等列表中显示数据。
Example One
Example Two
Example Three
...
我想要做的是使用Java将此文本文件转换为XML文件(output.xml),声明对于每个列表条目,将其放在标记中(例如<tag>Example One</tag>
)。我已经对此进行过研究,但是我得到的结果要么与我正在做的事情无关,要么过于复杂化这个简单的例子,要么就我提供的内容或提供的内容没有提供足够的解释。解决方案有效。
有人可以帮我解决我想要完成的事情吗?
非常感谢。
答案 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.
希望这能帮助你朝着正确的方向前进。