您的位置:首页 > 其它

心态不好的时候留给自己看

2011-11-14 16:32 225 查看
下面是要解析的xml文件:

<?xml version="1.0" encoding="GB2312"?>

<mp3s>
<mp3>
<name>
AAA
</name>
<time>
11111111
</time>
</mp3>

<mp3>
<name>
BBB
</name>
<time>
22222222
</time>
</mp3>
</mp3s>

 

第一种方法:用DOM解析(不需要使用别的jar包):

package cn.lifx.xml.parse;

import java.io.File;
import java.io.FileNotFoundException;
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.NodeList;
import org.xml.sax.SAXException;

public class DomTest
{
private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";
private static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

public static void main(String[] args)
{
File f = new File(path);

try
{
DocumentBuilder builder = factory.newDocumentBuilder();

Document doc = builder.parse(f);

NodeList values = doc.getElementsByTagName("mp3");

for(int i=0; i<values.getLength(); i++)
{
System.out.println("name: " + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());

System.out.println("time: " + doc.getElementsByTagName("time").item(i).getFirstChild().getNodeValue());
}

} catch(FileNotFoundException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch(SAXException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}

 

第二种方法:用SAX(Simple API for XML)解析,需要使用sax.jar包

package cn.lifx.xml.parse;

import java.util.Stack;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SaxTest extends DefaultHandler
{
private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";
private static Stack<String> tags = new Stack<String>();

public SaxTest()
{
super();
}

public static void main(String args[])
{
SAXParserFactory factory = SAXParserFactory.newInstance();

try
{
SAXParser parser = factory.newSAXParser();

parser.parse(new InputSource(path), new SaxTest());

} catch (Exception e) {
e.printStackTrace();
}
}

public void characters(char ch[], int start, int length) throws SAXException
{
while(!tags.isEmpty())
{
String tag = tags.pop();

if(tag.equals("name"))
{
System.out.println("name:" + new String(ch, start, length));
}
else if(tag.equals("time"))
{
System.out.println("time: " + new String(ch, start, length));
}
}
}

public void startElement(String uri, String localName, String qName, Attributes attrs)
{
tags.push(qName);
}
}

 

 

第三种方法:使用jdom,需要下载jdom.jar包

package cn.lifx.xml.parse;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class JDomTest
{
private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";

public static void main(String[] args)
{
File f = new File(path);

SAXBuilder builder = new SAXBuilder();

Document doc = null;
try
{
doc = builder.build(f);

} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

if(doc != null)
{
Element element = doc.getRootElement();

List values = element.getChildren();

for(int i=0; i<values.size(); i++)
{
System.out.println("name: " + ((Element)values.get(i)).getChild("name").getText());

System.out.println("time: " + ((Element)values.get(i)).getChild("time").getText());
}
}
}
}

 

 

第四种方法:使用dom4j,需要下载dom4j.jar包

package cn.lifx.xml.parse;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jTest
{
public static void main(String[] args)
{
String path = "D:\\workspace\\XMLParseTest\\test.xml";

File f = new File(path);

SAXReader reader = new SAXReader();

try
{
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element element;

for(Iterator i=root.elementIterator("mp3"); i.hasNext();)
{
element = (Element) i.next();

System.out.println("name: " + element.elementText("name"));
System.out.println("time: " + element.elementText("time"));
}

} catch (DocumentException e) {
e.printStackTrace();
}
}
}

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐