我用了j2sdk,j2ee,jdom,IBM XML4j,配置如下: [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 ""; } } }
|
|
来自: bluecrystal > 《XML》