2012-02-29 7 views
1

私は次の形式で.txtファイルがあります。XML形式の.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

これは、XMLファイルのように見えます。 XMLの解析を求めます。 – Lukasz

+1

なぜXMLライブラリを使用しないのですか? jdomと言う? – Jayan

+0

宣言のないXMLのように見えます。もしそうなら、xpathを使用します。 –

答えて

1

通常のXMLパーサーを試してみてください。 saxonはいいです。

2

これはXMLとよく似ています。あなたがこれらを解析するために使用できるユーティリティの大量のトラックがあります。だから、仕事はすでにあなたのために行われています!

「java xml parser」を検索するだけです。

  • JDOM
  • woodstox
  • XOM
  • dom4jの
  • VTD-XML
  • のXerces-J
  • 深紅
  • また、ここにあなたが調べることができますリストです

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()); 
// ... 
関連する問題