import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DocDemo {
private Document document = null;
public void getDocument() {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse("收藏信息.xml");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void show() {
//找到所有的Brand
NodeList nodeList = document.getElementsByTagName("Brand");
//遍历每一个Brand
for(int i = 0;i<nodeList.getLength();i++) {
Node node = nodeList.item(i);
//转成元素类型
Element eleBrand = (Element)node;
System.out.println("品牌"+eleBrand.getAttribute("name"));
//找到当前Brand的所有子节点
NodeList typeList = eleBrand.getChildNodes();
//遍历每一个子节点
for(int j = 0;j<typeList.getLength();j++) {
Node typeNode = typeList.item(j);
//因为Brand的子节点中可能有非元素点,比如属性节点、文本节点
//所以要先判断该子节点是否是一个元素节点,如果是才能进行强转
//typeNode.getNodeType()这个方法时获取当前节点的字节类型————元素节点、属性节点、文本节点
if(typeNode.getNodeType() == Node.ELEMENT_NODE) {
//转换成元素对象
Element eleType = (Element)typeNode;
System.out.println("\t型号:"+eleType.getAttribute("name"));
}
}
}
}
public static void main(String[] args) {
DocDemo d = new DocDemo();
d.getDocument();
d.show();
}
}
![]()