您的位置:首页 > 其它

四种解析XML文件的方法

2007-05-20 22:00 295 查看
<?xml version="1.0" encoding="GB2312"?> 
<RESULT> 
<VALUE> 
   <NO>A1234</NO> 
   <ADDR>成都XX街</ADDR> 
</VALUE> 
<VALUE> 
   <NO>B1234</NO> 
   <ADDR>绵阳XX街</ADDR> 
</VALUE> 
</RESULT> 

具体解析方法:

 


1)DOM 




import java.io.*; 


import java.util.*; 


import org.w3c.dom.*; 


import javax.xml.parsers.*; 






public class MyXMLReader...{ 




 public static void main(String arge[])...{ 




  long lasting =System.currentTimeMillis(); 




  try...{ 


   File f=new File("data_10k.xml"); 


   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); 


   DocumentBuilder builder=factory.newDocumentBuilder(); 


   Document doc = builder.parse(f); 


   NodeList nl = doc.getElementsByTagName("VALUE"); 




   for (int i=0;i<nl.getLength();i++)...{ 


    System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); 


    System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); 


   } 




  }catch(Exception e)...{ 


   e.printStackTrace(); 







2)SAX 




import org.xml.sax.*; 


import org.xml.sax.helpers.*; 


import javax.xml.parsers.*; 






public class MyXMLReader extends DefaultHandler ...{ 




 java.util.Stack tags = new java.util.Stack(); 




 public MyXMLReader() ...{ 


  super(); 









 public static void main(String args[]) ...{ 


  long lasting = System.currentTimeMillis(); 




  try ...{ 


   SAXParserFactory sf = SAXParserFactory.newInstance(); 


   SAXParser sp = sf.newSAXParser(); 


   MyXMLReader reader = new MyXMLReader(); 


   sp.parse(new InputSource("data_10k.xml"), reader); 




  } catch (Exception e) ...{ 


   e.printStackTrace(); 


  } 




  System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");} 




  public void characters(char ch[], int start, int length) throws SAXException ...{ 


  String tag = (String) tags.peek(); 




  if (tag.equals("NO")) ...{ 


   System.out.print("车牌号码:" + new String(ch, start, length)); 







if (tag.equals("ADDR")) ...{ 


  System.out.println("地址:" + new String(ch, start, length)); 












  public void startElement(String uri,String localName,String qName,Attributes attrs) ...{ 


  tags.push(qName);} 







3) JDOM 




import java.io.*; 


import java.util.*; 


import org.jdom.*; 


import org.jdom.input.*; 






public class MyXMLReader ...{ 






 public static void main(String arge[]) ...{ 


  long lasting = System.currentTimeMillis(); 




  try ...{ 


   SAXBuilder builder = new SAXBuilder(); 


   Document doc = builder.build(new File("data_10k.xml")); 


   Element foo = doc.getRootElement(); 


   List allChildren = foo.getChildren(); 




   for(int i=0;i<allChildren.size();i++) ...{ 


    System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText()); 


    System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); 


   } 




  } catch (Exception e) ...{ 


   e.printStackTrace(); 












4)DOM4J 




import java.io.*; 


import java.util.*; 


import org.dom4j.*; 


import org.dom4j.io.*; 






public class MyXMLReader ...{ 






 public static void main(String arge[]) ...{ 


  long lasting = System.currentTimeMillis(); 




  try ...{ 


   File f = new File("data_10k.xml"); 


   SAXReader reader = new SAXReader(); 


   Document doc = reader.read(f); 


   Element root = doc.getRootElement(); 


   Element foo; 




   for (Iterator i = root.elementIterator("VALUE"); i.hasNext() ...{ 


    foo = (Element) i.next(); 


    System.out.print("车牌号码:" + foo.elementText("NO")); 


    System.out.println("车主地址:" + foo.elementText("ADDR")); 


   } 




  } catch (Exception e) ...{ 


   e.printStackTrace(); 










 

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