我用了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文件,系統(tǒng)提示:
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();
//獲取根節(jié)點并打印根節(jié)點的名稱
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 "";
}
}
}