2012-12-28 186 views
0

我很抱歉問同一個問題,但根據我的研究,它似乎在不同的上下文中。我知道爲什麼錯誤即將到來,但是我沒有看到並遵循一些編程論壇來消除它。我的程序如下:我ping一個url並打開輸入流,然後將該流寫入一個xml文件。之後,我使用Xpath提取一些進一步用於計算的信息。我的代碼如下:錯誤的XML格式:空格錯誤

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和的systenId之間空格。 由於我直接寫入文件,可能會出現這種空白區域錯誤?

+0

你能告訴我們'data.xml'的內容嗎? – jlordo

+0

在此處上傳:http://s000.tinyupload.com/?file_id=71469882106124398976 –

+0

as [burna](http://stackoverflow.com/users/517740/burna)在他的[回覆]中說過(http:// stackoverflow.com/a/14069218/1749753)。您可以使用[JSoup](http://jsoup.org/)來解析HTML文件。 – jlordo

回答

0

它看起來像你以前寫的XML文件是無效的,這就是爲什麼你解析文件時出現錯誤。標準的XML解析框架只接受格式正確的有效XML。

如果您想使用無效的,也許不平衡​​的HTML標記湯,我推薦JSoup,因爲它可以使用無效的XML。