我有以下格式的.txt文件:
<DOC>
<DOCNO> 123456 </DOCNO>
<DOCTYPE> MISCELLANEOUS </DOCTYPE>
<TXTTYPE> CAPTION </TXTTYPE>
<AUTHOR> MICHAEL </AUTHOR>
<DATE> 1.1.2012 </DATE>
<TEXT>
Some Text
</TEXT>
</DOC>
如何使用Java访问这些.txt文件中的标签?我想知道是否有办法直接访问标记,而不是逐行读取.txt文件。
答案 0 :(得分:3)
由于该文件已经是XML格式,因此您可以使用Java SE内置JAXB API。不需要第三方库或使用XPath潜入另一个新的学习曲线。它也不关心文件扩展名。它所需要的只是文件的InputStream
。
首先创建一个符合XML文档结构的JAXB javabean类:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="DOC")
@XmlAccessorType(XmlAccessType.FIELD)
public class Doc {
@XmlElement(name="DOCNO")
private Integer docNo;
@XmlElement(name="DOCTYPE")
private String docType;
@XmlElement(name="TXTTYPE")
private String txtType;
@XmlElement(name="AUTHOR")
private String author;
@XmlElement(name="DATE") // You could use a custom adapter if you want java.util.Date.
private String date;
@XmlElement(name="TEXT")
private String text;
// Add/generate getters, setters and other javabean boilerplate.
}
然后你可以按如下方式解析它:
JAXBContext jaxb = JAXBContext.newInstance(Doc.class);
InputStream input = new FileInputStream("/path/to/your/file.txt");
Doc doc = (Doc) jaxb.createUnmarshaller().unmarshal(input);
System.out.println(doc.getDocNo());
System.out.println(doc.getDocType());
// ...
答案 1 :(得分:2)
这看起来非常像XML。您可以使用大量实用程序来解析这些实用程序。所以,这项工作已经为你完成了!
只需搜索“java xml parser”。
或者,这是您可以调查的列表:
答案 2 :(得分:1)
尝试普通的XML解析器。 saxon 是个好人。