2011-12-16 12 views
2

私はJavaの経験がほとんどありません。ドキュメントをUTF-8として読み込もうとしていますが、InputStreamリーダーをドキュメントビルダーにフックしようとしています。DocumentBuilderでInputStreamReaderを解析する

は、ここで私がこれまで持っているものです:誰かがあなたの周りにInputStreamReaderInputStreamReaderをラップしないでくださいいくつかのポインタ

+2

詳しくは "スタック来る" 手の込んだしてください。代わりに何が起こるのですか? – BalusC

+2

groovy.lang.GroovyRuntimeException:一致するコンストラクタが見つかりませんでした:java.io.InputStreamReader(java.io.InputStreamReader) –

+0

あなたはすでに回答があります。 – BalusC

答えて

2

これはGroovyのであると仮定すると、あなたは、Javaの多くのことは自分を取り除くことができます嫌なもの:

それを試してみましたが、未:

if(pathToFile == null) throw new Exception("You must supply a pathToFile parameter"); 

Element records = new File(pathToFile).withReader("utf-8") { r -> 
    DocumentBuilderFactory.newInstance().newDocumentBuilder().with { b -> 
    b.parse(new InputSource(r)).documentElement 
    } 
} 

が動作するはずです...

+0

Groovyですが、あなたの例でエラーが表示されます。クラスInputSourceを解決できません。余分なものがありますか? –

+0

はい、[org.xml.sax。 InputSource](http://docs.oracle.com/javase/6/docs/api/org/xml/sax/InputSource.html)DocumentBuilderがReaderで解析を呼び出すことはできないと思います –

7

を私に提供することができる場合

import javax.xml.xpath.*; 
import javax.xml.parsers.*; 
import org.w3c.dom.*; 


if(pathToFile == null) throw new Exception("You must supply a pathToFile parameter"); 

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 

InputStreamReader in = new InputStreamReader(new FileInputStream(pathToFile), "utf-8"); 

BufferedReader reader = new BufferedReader (new InputStreamReader (in)); 

Element records = builder.parse(reader).getDocumentElement(); 

は感謝します。 (またEDIT、リーダーからXMLを解析するいかなる方法がありませんから、あなたがInputSourceで読者をラップする必要があります):

if(pathToFile == null) 
    throw new Exception("You must supply a pathToFile parameter"); 

DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
    .newDocumentBuilder(); 

InputStreamReader in = new InputStreamReader(
    new FileInputStream(pathToFile), "utf-8"); 

BufferedReader reader = new BufferedReader (in); // CHANGED 

InputSource input = new InputSource(reader); 

Element records = builder.parse(input).getDocumentElement(); 
+0

上記のコメントと同じエラーが表示されます。groovy.lang.MissingMethodException:メソッドのシグネチャがありません。com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse()は引数型に適用されます。 java.io.BufferedReader) - 私は何かを逃したに違いないと確信していますが、何ですか? –

+0

@Jack - 編集されたコードを参照 –

+0

ありがとうTed。私はあなたの例をはるかに簡単に見つけることができましたが、私はもう少し凝縮し、それから多くを学ぶことができるので、他の答えを受け入れました。 –

関連する問題