**
一.DOM解析
**
1).DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2).DocumentBuilder builder = factory.newDocumentBuilder();
3).File file = new File() //指定xml文件
4).Document document = builder.parse(file); //开始解析文件
5).Element e = document.getDocumentElement(); //获取根节点
6).NodeList nl = e.getChildNodes(); //获取所有子节点
7). for(int i=0;i<nl.getLength();i++) {
if(nl.item(i).getNodeType()==Node.ELEMENT_NODE)//判断获取元素节点(DOM解析将根节点下的所有都看作节点,分为元素节点
和文本节点,1就为元素节点)
{
Element e2 = (Element) nl.item(i);
String tagName = e2.getNodeName(); //获取节点(标签)名称
String attValue = e2.getAttribute("class"); //获取指定属性节点的值
}
8).若子元素节点下还有元素节点,重复 7)操作
9).其中getTextContent()方法可以获得文本内容
**
二.DOM4J解析
**
1).SAXReader reader = new SAXReader();
2).Document document = reader.read(filePath)
3).Element rootElement = document.getRootElement(); //获取根节点
4).List<Element> elements = rootElement.elements(); //获取根节点下的所有子节点
(attributeValue("") 这个方法可以获取指定属性的属性值或所有属性名是这个的属性值)
5).for(Element e : elements)循环遍历子节点 e.attribute("")获得指定属性 .getValue()获取该属性的属性值 .getName()获取该属性的名称
6).获取当前标签的文本值 e1.getText();
获取当前标签下所有的文本值 e1.getStringValue();
**
三.SAX解析 (这个解析要继承一个类DefaultHandler)
**
1).SAXParserFactory factory = SAXParserFactory.newInstance();
2).SAXParser parser = factory.newSAXParser();
3).可以选择再写一个类来继承DefaultHandler,并重写5个方法
(1)startDocument()表示解析开始
(2)endDocument()表示解析结束
(3)startElement(String uri, String localName, String qName, Attributes attributes) //这个表示到了获取开始标签
qName表示标签名称
(3.1)for(int i=0;i<attributes.getLength();i++) {
String name = attributes.getQName(i);
String value = attributes.getValue(i);
} //可以这样遍历开始标签(包括根节点和子节点),name表示属性名,value表示属性值
(4)endElement(String uri, String localName, String qName) //这个表示到了获取结束标签
qName表示标签名
(4.1) 这里直接可以拼接一个结束标签 "</"+qName+">"
(5)characters(char[] ch, int start, int length) // 这个表示到了获取文本了
(5.1)String msg = new String(ch,start,length); 他是给了一个字符数组,开始和结束,将其变成字符串即可
实现完这个类后new自定义的类对象,parse.parse("文件路径",自定义类对象)
第三步也可以这样写:前两步不变 parse.parse("src/com/xml/ch2/books.xml", new DefaultHandler(){重写那五个方法};
**
四.JDOM解析
**
1).File file = new File(filePath); //指定xml文件路径
2).SAXBuilder builder = new SAXBuilder();
3).Document doc = builder.build(file); //开始解析文件
4).Element root = doc.getRootElement(); //获得根节点
5).List<Element> list = root.getChildren() //获取根节点下的所有子节点,可以指定节点名称
6). for(Element e : list) {
String name = e.getAttributeValue("");
String cls = e.getAttributeValue("");
} //获取节点的属性值,(可以指定属性名)