四种解析方式

**

一.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.1for(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("");
	}   //获取节点的属性值,(可以指定属性名)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值