import org.xml.sax.Attributes; import org.xml.sax.SAXParseException; import org.xml.sax.SAXException; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.helpers.DefaultHandler; class SAXTest extends DefaultHandler{ private StringBuffer buffer=new StringBuffer(); public void parseURI(String uri) { try { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); sp.parse(uri,this); } catch (Exception e) { e.printStackTrace(); } } /** Start document. */ public void startDocument() { buffer.append("< ?xml version=\"1.0\"?>"); } /** Start element. */ public void startElement(String namespaceURI, String localName, String rawName, Attributes attrs) { buffer.append("< "); buffer.append(rawName); if (attrs != null) { int len = attrs.getLength(); for (int i = 0; i < len; i++) { buffer.append(" "); buffer.append(attrs.getQName(i)); buffer.append("=\""); buffer.append(attrs.getValue(i)); buffer.append("\""); } } buffer.append(">"); } /** Characters. */ public void characters(char ch[], int start, int length) { buffer.append(new String(ch, start, length)); } /** Ignorable whitespace. */ public void ignorableWhitespace(char ch[], int start, int length) { characters(ch, start, length); } /** End element. */ public void endElement(String namespaceURI, String localName, String rawName) { buffer.append(""); } // endElement(String) /** End document. */ public void endDocument() { } /** Processing instruction. */ public void processingInstruction(String target, String data) { buffer.append("< ?"); buffer.append(target); if (data != null && data.length() > 0) { buffer.append(' '); buffer.append(data); } buffer.append("?>"); } /** Returns a string of the location. */ private String getLocationString(SAXParseException ex) { StringBuffer str = new StringBuffer(); String systemId = ex.getSystemId(); if (systemId != null) { int index = systemId.lastIndexOf('/'); if (index != -1) systemId = systemId.substring(index + 1); str.append(systemId); } str.append(':'); str.append(ex.getLineNumber()); str.append(':'); str.append(ex.getColumnNumber()); return str.toString(); } public static void main(String args[]){ SAXTest st=new SAXTest(); st.parseURI("student.xml"); System.out.println(st.buffer.toString()); } }
运行报错java.io.FileNotFoundException: D:\JAVA\workspace\Stu_DWR\Student.xml (系统找不到指定的文件。) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at test.解析xml文件.SAXTest.parseURI(SAXTest.java:20) at test.解析xml文件.SAXTest.main(SAXTest.java:104)文件在src根目录下: Student.xml <?xml version="1.0" encoding="UTF-8"?> <person> <name>王小明</name> <college>信息学院</college> <telephone>6258113</telephone> <notes>男,1955年生,博士,95年调入海南大学</notes> </person> 如果在src下test包中,如何写路径 请大侠指教,谢谢了
你看一下这个例子 import java.io.*; import java.net.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*;/** * This program demonstrates how to use a SAX parser. The program prints all hyperlinks links of an * XHTML web page. <br> * Usage: java SAXTest url * @version 1.00 2001-09-29 * @author Cay Horstmann */ public class SAXTest { public static void main(String[] args) throws Exception { String url; if (args.length == 0) { url = "http://www.w3c.org"; System.out.println("Using " + url); } else url = args[0]; DefaultHandler handler = new DefaultHandler() { public void startElement(String namespaceURI, String lname, String qname, Attributes attrs) { if (lname.equals("a") && attrs != null) { for (int i = 0; i < attrs.getLength(); i++) { String aname = attrs.getLocalName(i); if (aname.equals("href")) System.out.println(attrs.getValue(i)); } } } }; SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); SAXParser saxParser = factory.newSAXParser(); InputStream in = new URL(url).openStream(); saxParser.parse(in, handler); } }
Using http://www.w3c.org Exception in thread "main" java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source) at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at test.解析xml文件.SAXTest.main(SAXTest.java:44) 还是报错如何取出xml文件中的内容,请大侠指教,谢谢
运行发生异常rpath:D:/JAVA/workspace/Test/WebRoot/WEB-INF/classes/%e8%af%bb%e5%8f%96xml%e6%96%87%e4%bb%b6/xmltest.xml =====================SAX========================= rpath:D:/JAVA/workspace/Test/WebRoot/WEB-INF/classes/%e8%af%bb%e5%8f%96xml%e6%96%87%e4%bb%b6/xmltest.xml java.io.FileNotFoundException: D:\JAVA\workspace\Test\WebRoot\WEB-INF\classes\读取xml文件\xmltest.xml (系统找不到指定的文件。) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source) at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at 读取xml文件.MyXMLReader.SAX(MyXMLReader.java:80) at 读取xml文件.MyXMLReader.main(MyXMLReader.java:107) SAX RUNTIME:31 MS
import org.xml.sax.Attributes;
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import org.xml.sax.helpers.DefaultHandler;
class SAXTest extends DefaultHandler{
private StringBuffer buffer=new StringBuffer();
public void parseURI(String uri)
{
try
{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
sp.parse(uri,this);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/** Start document. */
public void startDocument()
{
buffer.append("< ?xml version=\"1.0\"?>");
}
/** Start element. */
public void startElement(String namespaceURI, String localName,
String rawName, Attributes attrs)
{
buffer.append("< ");
buffer.append(rawName);
if (attrs != null)
{
int len = attrs.getLength();
for (int i = 0; i < len; i++)
{
buffer.append(" ");
buffer.append(attrs.getQName(i));
buffer.append("=\"");
buffer.append(attrs.getValue(i));
buffer.append("\"");
}
}
buffer.append(">");
}
/** Characters. */
public void characters(char ch[], int start, int length)
{
buffer.append(new String(ch, start, length));
}
/** Ignorable whitespace. */
public void ignorableWhitespace(char ch[], int start, int length)
{
characters(ch, start, length);
}
/** End element. */
public void endElement(String namespaceURI, String localName,
String rawName)
{
buffer.append("");
} // endElement(String)
/** End document. */
public void endDocument()
{
}
/** Processing instruction. */
public void processingInstruction(String target, String data)
{
buffer.append("< ?");
buffer.append(target);
if (data != null && data.length() > 0)
{
buffer.append(' ');
buffer.append(data);
}
buffer.append("?>");
}
/** Returns a string of the location. */
private String getLocationString(SAXParseException ex)
{
StringBuffer str = new StringBuffer();
String systemId = ex.getSystemId();
if (systemId != null)
{
int index = systemId.lastIndexOf('/');
if (index != -1)
systemId = systemId.substring(index + 1);
str.append(systemId);
}
str.append(':');
str.append(ex.getLineNumber());
str.append(':');
str.append(ex.getColumnNumber());
return str.toString();
}
public static void main(String args[]){
SAXTest st=new SAXTest();
st.parseURI("student.xml");
System.out.println(st.buffer.toString());
}
}
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at test.解析xml文件.SAXTest.parseURI(SAXTest.java:20)
at test.解析xml文件.SAXTest.main(SAXTest.java:104)文件在src根目录下: Student.xml
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>王小明</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1955年生,博士,95年调入海南大学</notes>
</person>
如果在src下test包中,如何写路径
请大侠指教,谢谢了
你看一下这个例子
import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;/**
* This program demonstrates how to use a SAX parser. The program prints all hyperlinks links of an
* XHTML web page. <br>
* Usage: java SAXTest url
* @version 1.00 2001-09-29
* @author Cay Horstmann
*/
public class SAXTest
{
public static void main(String[] args) throws Exception
{
String url;
if (args.length == 0)
{
url = "http://www.w3c.org";
System.out.println("Using " + url);
}
else url = args[0]; DefaultHandler handler = new DefaultHandler()
{
public void startElement(String namespaceURI, String lname, String qname,
Attributes attrs)
{
if (lname.equals("a") && attrs != null)
{
for (int i = 0; i < attrs.getLength(); i++)
{
String aname = attrs.getLocalName(i);
if (aname.equals("href")) System.out.println(attrs.getValue(i));
}
}
}
}; SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser saxParser = factory.newSAXParser();
InputStream in = new URL(url).openStream();
saxParser.parse(in, handler);
}
}
dirBase +"/" +src/Student.xml
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source)
at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source)
at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at test.解析xml文件.SAXTest.main(SAXTest.java:44)
还是报错如何取出xml文件中的内容,请大侠指教,谢谢
2、代码如下:MyXMLReader.java
import java.io.File;
import java.util.Iterator;
import java.util.List;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;import org.dom4j.io.SAXReader;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;public class MyXMLReader extends DefaultHandler {java.util.Stack tags = new java.util.Stack();
String path = "xmltest.xml";
//windows 系统获取路径
String rpath = MyXMLReader.class.getResource("").getPath().substring(1)
+ path;public MyXMLReader() {
super();
System.out.println("rpath:"+rpath);
}/**
* DOM方式
* @since V2.0
* @author David.Wei
* @date 2008-4-11
* @return void
*/
public void DOM() {
long lasting = System.currentTimeMillis();try {
File f = new File(rpath);
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("node");
for (int i = 0; i < nl.getLength(); i++) {
System.out.println("|| Name: |"
+ doc.getElementsByTagName("name").item(i)
.getFirstChild().getNodeValue());
System.out.println("||Space: |"
+ doc.getElementsByTagName("space").item(i)
.getFirstChild().getNodeValue());
System.out.println("-------------------------------------------------"); }
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("DOM RUNTIME:"
+ (System.currentTimeMillis() - lasting) + " MS");
}/**
* SAX方式
* @since V2.0
* @author David.Wei
* @date 2008-4-11
* @return void
*/
public void SAX() {long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource(rpath), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("SAX RUNTIME:"
+ (System.currentTimeMillis() - lasting) + " MS");
}public void startElement(String uri, String localName, String qName,
Attributes attrs) {
tags.push(qName);
}public void characters(char ch[], int start, int length)
throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("name")) {
System.out.println("|| Name: |" + new String(ch, start, length));
}
if (tag.equals("space")) {
System.out.println("||Space: |" + new String(ch, start, length));
}
System.out.println("-------------------------------------------------");
}/**
* JDOM方式
* @since V2.0
* @author David.Wei
* @date 2008-4-11
* @return void
*/
public void JDOM() {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
org.jdom.Document doc = builder.build(new File(rpath));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.println("|| Name: |"
+ ((Element) allChildren.get(i)).getChild("name")
.getText());
System.out.println("||Space: |"
+ ((Element) allChildren.get(i)).getChild("space")
.getText());
System.out.println("-------------------------------------------------"); }
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("JDOM RUNTIME:"
+ (System.currentTimeMillis() - lasting) + " MS");
}/**
* DOM4J方式
* @since V2.0
* @author David.Wei
* @date 2008-4-11
* @return void
*/
public void DOM4J() {
long lasting = System.currentTimeMillis();
try {
File f = new File(rpath);
SAXReader reader = new SAXReader();
org.dom4j.Document doc = reader.read(f);
org.dom4j.Element root = doc.getRootElement();
org.dom4j.Element foo;
for (Iterator i = root.elementIterator("node"); i.hasNext();) {
foo = (org.dom4j.Element) i.next();
System.out.println("|| Name: |" + foo.elementText("name"));
System.out.println("||Space: |" + foo.elementText("space"));
System.out.println("-------------------------------------------------");
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("DOM4J RUNTIME:"
+ (System.currentTimeMillis() - lasting) + " MS");
}public static void main(String arge[]) {
MyXMLReader myXML = new MyXMLReader();
System.out.println("=====================DOM=========================");
myXML.DOM();
System.out.println("=====================SAX=========================");
myXML.SAX();
System.out.println("=====================JDOM========================");
myXML.JDOM();
System.out.println("=====================DOM4J=======================");
myXML.DOM4J();
System.out.println("=================================================");
}
}3、xmltest.xml
<?xml version="1.0" encoding="gbk"?>
<list>
<node>
<name>weidewei</name>
<space>http://wishlife.javaeye.com</space>
</node>
<node>
<name>flying</name>
<space>http://user.qzone.qq.com/94611981</space>
</node>
</list>备注:xmltest.xml在src目录下
以上代码应该能满足你需求
=====================SAX=========================
rpath:D:/JAVA/workspace/Test/WebRoot/WEB-INF/classes/%e8%af%bb%e5%8f%96xml%e6%96%87%e4%bb%b6/xmltest.xml
java.io.FileNotFoundException: D:\JAVA\workspace\Test\WebRoot\WEB-INF\classes\读取xml文件\xmltest.xml (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at 读取xml文件.MyXMLReader.SAX(MyXMLReader.java:80)
at 读取xml文件.MyXMLReader.main(MyXMLReader.java:107)
SAX RUNTIME:31 MS