1.创建DocumentBuilderFactory对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInsance()
2.创建DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder()
3.获取并解析xml文件
Document document = db.parse("books.xml")
4.获取指定标签列表
NodeList bookList = document.getElementsByTagName("book");
5.获取标签中属性 id
//遍历获取指定属性
Element book = (Element) bookList.item(i);
String id = book.getAttribute("id");
System.out.println("id:"+id);
6.获取所有字节点
NodeList childNodes = book.getChildNodes();
7.获取节点内容
childNodes.item(j).getNodeName()
childNodes.item(j).getFirstChild().getNodeValue()
childNodes.item(j).getTextContent()
8.XML文件内容
<?xml version="1.0" encoding="UTF8" ?>
<bookstore>
<book id="1">
<name>红与黑</name>
<author>张飞</author>
<year>2018</year>
<price>78</price>
</book>
<book id="2">
<name>一千零一夜</name>
<page>1001</page>
<year>2014</year>
<price>99</price>
</book>
</bookstore>
9.完整Dom解析代码
public static void main(String[] args) {
//创建DocumentBuilderFactory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//创建DocumentBuilder
DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
//解析xml文件
Document document = documentBuilder.parse("books.xml");
//获取指定标签名的标签列表
NodeList bookList = document.getElementsByTagName("book");
//遍历标签列表
for (int i = 0; i < bookList.getLength(); i++) {
// System.out.println("这是第"+(i+1)+"本书");
// Node book = bookList.item(i);
// //获取标签中的所有属性
// NamedNodeMap attrs = book.getAttributes();
// for (int j = 0; j < attrs.getLength(); j++) {
// System.out.println("这本书共有"+attrs.getLength()+"属性");
// Node attr = attrs.item(j);
// String nodeName = attr.getNodeName();
// String nodeValue = attr.getNodeValue();
// System.out.println("属性名:"+nodeName+"属性值:"+nodeValue);
// }
//获取指定属性
Element book = (Element) bookList.item(i);
String id = book.getAttribute("id");
System.out.println("id:"+id);
//获取所有字节点
NodeList childNodes = book.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
//过滤#text 换行符
if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE) {
System.out.println(childNodes.item(j).getNodeName());
//获取标签中内容
// System.out.println(childNodes.item(j).getFirstChild().getNodeValue());
System.out.println(childNodes.item(j).getTextContent());
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}