Geronimo 叛逆者: 使用集成软件包:Codehaus 的 Woodstox
2010-04-06 00:00:00 来源:WEB开发网清单 3. 用 DOM 进行解析
Map<String,String> map = new HashMap<String,String>();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document dom = builder.parse(input);
Element root = dom.getDocumentElement();
NodeList childNodes = root.getChildNodes();
Node photosNode = null;
for (int i=0;i<childNodes.getLength();i++){
Node node = childNodes.item(i);
if (node.getNodeName().equalsIgnoreCase("photos")){
photosNode = node;
break;
}
}
childNodes = photosNode.getChildNodes();
for (int i=0;i<childNodes.getLength();i++){
Node node = childNodes.item(i);
if (node.getNodeName().equalsIgnoreCase("photo")){
String title = node.getAttributes().getNamedItem("title").getTextContent();
String id = node.getAttributes().getNamedItem("id").getTextContent();
map.put(id,title);
}
}
DOM 十分流行,因为它非常易于使用。只需将输入源传入解析器中,然后解析器将为您提供 document 对象。然后,您可以遍历子节点,直至找到照片节点。每个照片节点都是照片节点的子节点,因此您将遍历每个照片节点,然后访问每个照片节点的 title 和 id 属性并将其存储到映射中。
但是,DOM 也有一些明显的效率低下之处。您要存储大量的可能并不关心的数据,例如每张照片的所有者。您还将浏览所有数据两次:第一次浏览用于将其读入文档对象,然后在遍历文档对象时进行第二次浏览。避免这些效率低下之处的传统方法是使用 SAX。
更多精彩
赞助商链接