您的当前位置:首页解析xml文档的方式

解析xml文档的方式

来源:乌哈旅游
例子 如何解析 myusers.xml

下边是myusers.xml例子

mick 123 jack 123456

======================================== 以下是解析的方法 第一种: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(); } } }

因篇幅问题不能全部显示,请点此查看更多更全内容