下边是myusers.xml例子
======================================== 以下是解析的方法 第一种:DOM解析方式
public class TestDOM {
public static void main(String[] args) { DocumentBuilderFactory factory =
try { DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File
(\"src/com/softeem/xml/demo/myusers.xml\"));
NodeList nodeList = doc.getElementsByTagName(\"user\"); for (int i = 0; i < nodeList.getLength(); i++) { Element user = (Element)nodeList.item(i); System.out.println(\"id:\"+user.getAttribute(\"id\"));
String name = user.getElementsByTagName(\"name\").item(i) .getFirstChild().getNodeValue(); System.out.println(\"name:\"+name);
String pass = user.getElementsByTagName(\"pass\").item(i) .getFirstChild().getNodeValue(); System.out.println(\"pass:\"+pass); }
} catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
} }
第二种:SAX解析方式
public class TestSAX extends DefaultHandler{ //定义一个栈 先进后出 Stack stack = new Stack();
public static void main(String[] args) { SAXParserFactory factory = SAXParserFactory.newInstance(); try {
SAXParser parser = factory.newSAXParser(); parser.parse(new File(\"src/com/softeem\" + \"/xml/demo/myusers.xml\"), new TestSAX()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
}
public void startDocument(){ System.out.println(\"start......\"); }
//接受文档元素开始的通知 //uri名称空间的URI //localName 本地名称 //name 限定名称节点的值 //attributes 附加到元素的属性
public void startElement(String uri,String localName, String name,Attributes attributes){ //把项压入栈的顶部 stack.push(name);
String id = attributes.getValue(\"id\"); if(id != null){
System.out.println(\"id:\"+id); } }
//接受元素字符数据的通知 //ch 整个文档的字符
//start 字符数据中的开始位置 //length 从字符数据中使用的字符长度
public void characters(char[] ch,int start,int length){ String value = new String(ch,start,length); //查看栈顶
String name = (String)stack.peek(); if(name.equals(\"name\")){
System.out.println(\"name:\"+value); }else if(name.equals(\"pass\")){ System.out.println(\"pass:\"+value); } }
//接受元素结束的通知
public void endElement(String uri,String localName ,String name){ //移除栈顶的对象 stack.pop(); }
//接受文档结束的通知 public void endDocument(){
try {
super.endDocument(); } catch (SAXException e) { e.printStackTrace(); } } }
第三种:JDOM解析方式
public class TestJDOM {
public static void main(String[] args) { SAXBuilder builder = new SAXBuilder(); try {
Document doc = builder.
build(new File(\"src/com/softeem/xml/demo/myusers.xml\")); Element root = doc.getRootElement(); Namespace ns = root.getNamespace(); System.out.println(\"ns:\"+ns); List list = root.getChildren();
for (int i = 0; i < list.size(); i++) { Element user = (Element)list.get(i); String id = user.getAttributeValue(\"id\"); System.out.println(\"id:\"+id);
String name = user.getChild(\"name\ System.out.println(\"name:\"+name);
String pass = user.getChild(\"pass\ System.out.println(\"pass:\"+pass); }
} catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
第四种:DOM4J解析方式 public class TestDOM4J {
public static void main(String[] args) { SAXReader reader = new SAXReader(); try {
Document doc = reader.read(
new File(\"src/com/softeem/xml/demo/myusers.xml\")); Element root = doc.getRootElement(); Iterator it = root.elementIterator(); while(it.hasNext()){
Element user = (Element)it.next(); String id = user.attributeValue(\"id\"); System.out.println(\"id:\"+id);
String name = user.elementText(\"name\"); System.out.println(\"name:\"+name); String pass = user.elementText(\"pass\"); System.out.println(\"pass:\"+pass); }
} catch (DocumentException e) { e.printStackTrace(); } } }
因篇幅问题不能全部显示,请点此查看更多更全内容