1

私はJavaでxmlを処理しており、次のコードがあります。

  dbf.setValidating(false);
  dbf.setIgnoringComments(false);
  dbf.setIgnoringElementContentWhitespace(true);
  dbf.setNamespaceAware(true);

  DocumentBuilder db = null;
  db = dbf.newDocumentBuilder();
  db.setEntityResolver(new NullResolver());
  _logger.error("Before processing the input stream");
  processXml(db.parse(is));

ここで、(is)はInputStreamです。

これにより、エラーが発生します。

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:2バイトUTF-8の無効なバイト2

これは、間違ったエンコーディングを取得した結果として発生したエラーのように聞こえます。InputStreamにエンコーディングを設定したいのですが、方法がわかりません。InputSourceまたはInputStreamReaderでエンコーディングを設定する方法を見つけましたが、db.parseはリーダー/InputSourceを取りません。

これを修正する最良の方法は何ですか?

ありがとう!

4

1 に答える 1

2

DocumentBuilder.parse取ることができますInputSourcejavadocsを参照してください。

InputStreamしたがって、InputReader(文字セットを指定できる)でラップしてから、それにInputSource基づいて作成する必要があります。

少し複雑ですが、これらはJavaで発生します。

の線に沿った何か

于 2012-04-05T23:47:14.510 に答える