我目前正在尝试学习如何解析 XML 和 HTML。我能够使用当前代码解析 slickdeals XML 提要,但是当我尝试解析 slickdeals 的首页时遇到错误
[致命错误]:102:23:实体名称必须紧跟在实体引用中的“&”之后。线程“main”org.xml.sax.SAXParseException 中的异常:实体名称必须紧跟实体引用中的“&”。在 com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246) 在 com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
public class SlickDealMainPage {
public void parsing() throws Exception{
String url = "http://slickdeals.net/";
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());
doc.getDocumentElement().normalize();
//System.out.println("Root Element : " + doc.getDocumentElement().getNodeName());
System.out.println("Root Element : " + doc.getElementsByTagName("Body"));
NodeList itemList = doc.getElementsByTagName("body");
/* for(int temp = 0; temp < itemList.getLength(); temp++)
{
Node itemNode = itemList.item(temp);
System.out.println("\nCurrent Element : " + itemNode.getNodeName());
Element itemElement = (Element) itemNode;
System.out.println("\ntitle : " + itemElement.getElementsByTagName("title").item(0).getTextContent());
System.out.println("\nLink : " + itemElement.getElementsByTagName("link").item(0).getTextContent());
System.out.println("\nDate Published: " + itemElement.getElementsByTagName("pubDate").item(0).getTextContent());
}*/
}
}
我是使用 DOM 方法进行解析的新手,我已经到处寻找这个问题的答案。但是,我确实非常了解其他答案。
编辑:错误发生在
Document doc = db.parse(new URL(url).openStream());
谢谢您的帮助!