2)开始标签和结束标签对应
解析xml文件:DOM解析,Sax解析
1)DOM解析(将整个文档装在进内存,封装成对象)
整个文档叫做Document对象,Node节点,Element元素
xml文件的解析: 将xml文件中的数据取出来,封装程序可用的对象
2)Sax解析(simple API for XML)
是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,
但任何事物都有其相反的一面,对于SAX来说就是操作复杂。
例子:xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<Student>
<id>001</id>
<name>李刚</name>
<age>29</age>
</Student>
<Student>
<id>002</id>
<name>王强</name>
<age>22</age>
</Student>
<Student>
<id>003</id>
<name>张权</name>
<age>33</age>
</Student>
</Students>
解析xml文件:
package Test3;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XmlDemo {
public static void main(String[] args) throws Exception {
//1,获取文件解析工厂
DocumentBuilderFactory dby = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dby.newDocumentBuilder();
Document dt = db.parse("NewFile.xml");
//2,解析文件
Element element = dt.getDocumentElement();
String nodeName = element.getNodeName();
Test.println(nodeName);
//3,获取节点下面的子元素--获取students节点下面的元素
NodeList nodeList = element.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node item = nodeList.item(i);
String name = item.getNodeName();
Test.println(name);
if ("#text".equals(name)) {
continue;
}
NamedNodeMap map = item.getAttributes();
for (int j = 0; j < map.getLength(); j++) {
Node node = map.item(j);
String name2 = node.getNodeName();
String value = node.getNodeValue();
Test.println(name2+""+value);
}
NodeList nodes = item.getChildNodes();
for (int j = 0; j <nodes.getLength(); j++) {
Node item2 = nodes.item(j);
Test.println(item2.getNodeName()+"");
if ("#text".equals(item2.getNodeName())) {
continue;
}
String content = item2.getTextContent();
Test.println(content);
}
System.out.println();
}
}
}
测试Bug文件:
package Test3;
public class Test {
private static boolean isBug=true;
public static boolean isBug() {
return isBug;
}
public static void setBug(boolean isBug) {
Test.isBug = isBug;
}
public static void print(String Str){
if (isBug) {
System.out.print(Str);
}
}
public static void println(String Str){
if (isBug) {
System.out.println(Str);
}
}
}