Как получить доступ к значениям файла .txt в формате XML? - PullRequest
1 голос
/ 29 февраля 2012

У меня есть файлы .txt в следующем формате:

<DOC>
    <DOCNO> 123456 </DOCNO>
    <DOCTYPE> MISCELLANEOUS </DOCTYPE>
    <TXTTYPE> CAPTION </TXTTYPE>
    <AUTHOR> MICHAEL </AUTHOR>
    <DATE> 1.1.2012 </DATE>
    <TEXT>
    Some Text
    </TEXT>
</DOC>

Как я могу получить доступ к тегам в этих файлах .txt, используя Java? Я хочу знать, есть ли способ напрямую обращаться к тегам , а не читать файл .txt построчно.

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Поскольку файл уже имеет формат XML , вы можете просто использовать для этого встроенный в Java SE JAXB API.Нет необходимости в сторонних библиотеках или окунуться в другую новую кривую обучения с XPath.Это также не заботится о расширении файла.Все, что ему нужно - это просто InputStream файла.

Сначала создайте javabean-класс JAXB, который соответствует структуре документа XML:

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());
// ...
2 голосов
/ 29 февраля 2012

Это очень похоже на XML. Существует множество утилит, которые вы можете использовать для их анализа. Итак, работа уже сделана для вас!

Просто найдите "java xml parser".

Кроме того, вот список, который вы можете исследовать:

  • JDOM
  • Woodstox
  • XOM
  • dom4j
  • VTD-XML
  • Xerces-J
  • малиновый
1 голос
/ 29 февраля 2012

Попробуйте обычный синтаксический анализатор XML. саксон хороший.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...