私はJavaの経験がほとんどありません。ドキュメントをUTF-8として読み込もうとしていますが、InputStreamリーダーをドキュメントビルダーにフックしようとしています。DocumentBuilderでInputStreamReaderを解析する
は、ここで私がこれまで持っているものです:誰かがあなたの周りにInputStreamReader
InputStreamReader
をラップしないでくださいいくつかのポインタ
私はJavaの経験がほとんどありません。ドキュメントをUTF-8として読み込もうとしていますが、InputStreamリーダーをドキュメントビルダーにフックしようとしています。DocumentBuilderでInputStreamReaderを解析する
は、ここで私がこれまで持っているものです:誰かがあなたの周りにInputStreamReader
InputStreamReader
をラップしないでくださいいくつかのポインタ
これは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
}
}
が動作するはずです...
Groovyですが、あなたの例でエラーが表示されます。クラスInputSourceを解決できません。余分なものがありますか? –
はい、[org.xml.sax。 InputSource](http://docs.oracle.com/javase/6/docs/api/org/xml/sax/InputSource.html)DocumentBuilderがReaderで解析を呼び出すことはできないと思います –
を私に提供することができる場合
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();
上記のコメントと同じエラーが表示されます。groovy.lang.MissingMethodException:メソッドのシグネチャがありません。com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse()は引数型に適用されます。 java.io.BufferedReader) - 私は何かを逃したに違いないと確信していますが、何ですか? –
@Jack - 編集されたコードを参照 –
ありがとうTed。私はあなたの例をはるかに簡単に見つけることができましたが、私はもう少し凝縮し、それから多くを学ぶことができるので、他の答えを受け入れました。 –
詳しくは "スタック来る" 手の込んだしてください。代わりに何が起こるのですか? – BalusC
groovy.lang.GroovyRuntimeException:一致するコンストラクタが見つかりませんでした:java.io.InputStreamReader(java.io.InputStreamReader) –
あなたはすでに回答があります。 – BalusC