我为提出同样的问题而道歉,但根据我的研究,它似乎在不同的背景下。我知道为什么错误即将来临,但是如果不去寻找和关注一些编程论坛,我就无法根除它。我的程序如下:我正在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之间需要空格。 由于我直接写入文件,可能会出现此空格错误?
答案 0 :(得分:0)
看起来您之前编写的XML文件无效,这就是解析文件时出错的原因。标准的XML解析框架只接受格式良好的有效XML。
如果你想使用无效的,可能是不平衡的HTML标签,我推荐使用JSoup,因为它可以处理无效的XML。