0

同じ質問をして申し訳ありませんが、私の調査によると、文脈が異なるようです。エラーが発生する理由はわかっていますが、いくつかのプログラミング フォーラムを調べたりフォローしたりせずにエラーを根絶できませんでした。私のプログラムは次のようになります。URL を ping して入力ストリームを開き、そのストリームを xml ファイルに書き込みます。その後、Xpath を使用して、さらに計算に使用される情報を抽出しています。私のコードは次のとおりです。

    URL u=new URL("url here");
    HttpURLConnection con=(HttpURLConnection)u.openConnection();
    InputStream is=con.getInputStream();
    BufferedInputStream br=new BufferedInputStream(is);

    File f=new File("data.xml");
    if(f.exists())f.delete();
    f.createNewFile();
    byte data[] = new byte[1024];
    int count;
    FileOutputStream fout = new FileOutputStream(f);
    while((count = br.read(data,0,1024)) != -1)
    {
            fout.write(data, 0, count);
    }
    fout.close();

    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    DocumentBuilder db=dbf.newDocumentBuilder();
    Document doc=db.parse("data.xml");

    XPathFactory  factory=XPathFactory.newInstance();
    XPath xPath=factory.newXPath();
    XPathExpression expr = xPath.compile("//tr/text()");
    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) {
        System.out.println(nodes.item(i).getNodeValue());
    }

このコードを実行すると、 publicId と systemId の間に空白が必要です。ファイルに直接書き込んでいるので、この空白エラーはどこで発生する可能性がありますか?

4

1 に答える 1

0

以前に作成した XML ファイルが無効のようです。これが、ファイルの解析中にエラーが発生する理由です。標準の XML 解析フレームワークは、整形式の有効な XML のみを受け入れます。

無効な、おそらくアンバランスな HTML タグ スープを使用する場合は、無効な XML を処理できるJSoupをお勧めします。

于 2012-12-28T11:58:49.827 に答える