如何以XML格式访问.text文件的值?

时间:2012-02-29 16:08:11

标签: java xml tags

我有以下格式的.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文件。

3 个答案:

答案 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”。

或者,这是您可以调查的列表:

  • JDOM
  • woodstox
  • XOM
  • DOM4J
  • VTD-XML的
  • 的xerces-J
  • 深红色

答案 2 :(得分:1)

尝试普通的XML解析器。 saxon 是个好人。