分享

配置java才解析xml文件

 bluecrystal 2006-07-23
我用了j2sdk,j2ee,jdom,IBM  XML4j,配置如下:  
csharp [CLASS_PATH]D:\j2sdk\bin;D:\j2sdk\lib\dt.jar;D:\j2sdk\lib\tools.jar;D:\j2ee\lib\j2ee.jar;D:\jdom\build\jdom.jar;D:\jdom\lib\xerces.jar;D:\xml4j\xercesImpl.jar;D:\xml4j\xmlParserAPIs.jar  
[JAVA_HOME]                          D:\j2sdk  
[J2EE_HOME]                          D:\j2ee  
[JAVA_XML_PACK_HOME]        D:\java_xml_pack  
[JAXM_HOME]                          D:\java_xml_pack\jaxm  
[JAXP_HOME]                          D:\java_xml_pack\jaxp  
[JAXR_HOME]                          D:\java_xml_pack\jaxr  
[JAXRPC_HOME]                      D:\java_xml_pack\jaxrpc  
[PATH]                                    D:\j2sdk\bin;D:\j2ee\bin  
 
运行下面这个示例时解析不了xml文件,系统提示:  
Example1  SAX  Event:  
org.xml.sax.SAXException:System  property  org.xml.sax.driver  not  specified  
at  org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReadyFactory.java:90)  
at  Example1.main(Example1.java:68)  
 
代码:  
import  org.xml.sax.*;  
import  org.xml.sax.helpers.*;  
import  java.io.*;  
 
public  class  Example1  extends  DefaultHandler  {  
     public  void  startDocument(  )  throws  SAXException  {  
           System.out.println(  "SAX  Event:  START  DOCUMENT"  );  
     }  
 
     public  void  endDocument(  )  throws  SAXException  {  
           System.out.println(  "SAX  Event:  END  DOCUMENT"  );  
     }  
 
     public  void  startElement(  String  namespaceURI,  
                           String  localName,  
                           String  qName,  
                           Attributes  attr  )  throws  SAXException  {  
                 System.out.println(  "SAX  Event:  START  ELEMENT[  "  +  localName  +  "  ]"  );  
                               for  (  int  i  =  0;  i  <  attr.getLength();  i++  ){  
                                     System.out.println(  "      ATTRIBUTE:  "  +  
                                   attr.getLocalName(i)  +  
                                   "  VALUE:  "  +  
                                   attr.getValue(i)  );  
           }  
 
     }  
 
     public  void  endElement(  String  namespaceURI,  
                           String  localName,  
                           String  qName  )  throws  SAXException  {  
           System.out.println(  "SAX  Event:  END  ELEMENT[  "  +localName  +  "  ]"  );  
     }  
 
     public  void  characters(  char[]  ch,  int  start,  int  length  )  
                                   throws  SAXException  {  
           System.out.print(  "SAX  Event:  CHARACTERS[  "  +  ch  +  "  ]");  
           try  {  
                 OutputStreamWriter  outw  =  new  OutputStreamWriter(System.out);  
                 outw.write(  ch,  start,length  );  
                 outw.flush();  
           }  catch  (Exception  e)  {  
                 e.printStackTrace();  
           }  
           System.out.println(  "  )"  );  
     }  
 
     public  static  void  main(  String[]  argv  ){  
 
           System.out.println(  "Example1  SAX  Events:"  );  
           try  {  
                 XMLReader  xr  =  XMLReaderFactory.createXMLReader();  
                 xr.setContentHandler(  new  Example1()  );  
                 xr.parse(  new  InputSource(  
                             new  FileReader(  "Example1.xml"  ))  );  
 
           }catch  (  Exception  e  )    {  
                 e.printStackTrace();  
           }  
 
     }  
 
}  
---------------------------------------------------------------  
 
look,这段程序可以解析csdn的帖子,  
不过是使用DOM了,你的summer  pack里面带了的  
 
import  javax.xml.parsers.*;  
import  org.w3c.dom.*;  
import  java.io.*;  
 
public  class  testparse  {  
 
   public  testparse()  {  
   }  
   public  static  void  main(String[]  args)  {  
       try{  
                     //获取一个XML解析器  
                     DocumentBuilderFactory  factory=DocumentBuilderFactory.newInstance();  
                     DocumentBuilder  builder=factory.newDocumentBuilder();  
                     //解析XML文件  
                     Document  document=builder.parse(new  File("csdn.xml"));  
                     //去掉XML文档中空白部分  
                     document.normalize();  
                     //获取根节点并打印根节点的名称  
                     Element  root=document.getDocumentElement();  
                     System.out.println("根原始的名称:"+root.getTagName());  
 
                     NodeList  Issues=root.getElementsByTagName("Issue");  
                     //遍历NodeList  
                     Element  Issue  =  (Element)Issues.item(0);  
                     System.out.println("testattr  =  "  +  Issue.getAttribute("testattr"));  
                     for(int  i=0;i<  Issue.getElementsByTagName("PostUserNickName").getLength()  ;i++)  
                     {  
                         System.out.println("提交者"  +  i  +  "("  +  ((Element)Issue.getElementsByTagName("PostUserNickName").item(i)).getAttribute("绰号")+"):"  +  Issue.getElementsByTagName("PostUserNickName").item(i).getFirstChild().getNodeValue());  
                     }  
                     System.out.println("标题:"  +  Issue.getElementsByTagName("TopicName").item(0).getFirstChild().getNodeValue());  
                     System.out.println("问题:"  +  Issue.getElementsByTagName("Content").item(0).getFirstChild().getNodeValue());  
                     NodeList  Replys=root.getElementsByTagName("Reply");  
/*  
                     Element  tmp  =  (Element)Replys1.item(0);  
                     NodeList  Replys=tmp.getElementsByTagName("Reply");  
                     */  
                     for(int  j  =0;j<Replys.getLength();j++)  
                     {  
                         Element  Reply  =  (Element)Replys.item(j);  
                         System.out.println("------------------------------");  
                         System.out.println("回复者"  +  j  +  "("  +  getDOMElementTextByTagName(Reply,"PostUserNickName")  +  "):"  +  getDOMElementTextByTagName(Reply,"Content"));  
                     }  
       }  
               catch(Exception  e2){  
                   System.out.println(e2.getMessage());  
               }  
   }  
private  static  String  getDOMElementTextByTagName(Element  element,  String  tagname)  {  
       NodeList  nl  =  element.getElementsByTagName(tagname);  
       Node  n;  
       n  =  nl.item(0).getFirstChild();;  
       try  
       {  
           return  n.getNodeValue();  
       }  
       catch(Exception  e)  
       {  
           return  "";  
       }  
}  
 
 
}

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多