0

我很抱歉问了同样的问题,但根据我的研究,这似乎是在不同的背景下。我知道为什么会出现错误,但是如果不查看并关注一些编程论坛,我就无法根除它。我的程序如下:我正在 ping 一个 url 并打开输入流,然后将该流写入一个 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 标签汤,我推荐JSoup,因为它可以使用无效的 XML。

于 2012-12-28T11:58:49.827 回答