我很抱歉问了同样的问题,但根据我的研究,这似乎是在不同的背景下。我知道为什么会出现错误,但是如果不查看并关注一些编程论坛,我就无法根除它。我的程序如下:我正在 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 之间需要空格。由于我是直接写入文件,这个空白错误可能发生在哪里?