java解析器解析XML文件,但总是编译不过,
这是一本XML书里的案例,是用JAVA解释器解释XML文件,让其内容显示出来,可是对着书查了好向遍,没发现有什么不一样的,但程序就是编译不过去,请高手帮忙,小弟万分感谢!以下是JAVA文件代码
//TestXML.java
import javax.xml.parsers.*;
import org.xml.sax.helpers.*;
import org.xml.sax.*;
import java.io.*;
import org.w3c.dom.*;
public class TestXML
{
public static void main(String [] args)
{
try {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
MyHandler handler= new MyHandler();
builder.setErrorHandler(handler);
Document document=builder.parse(new File("Price.xml"));
NodeList nodelist=document.getElementsByTagName("goods");
int size=nodelist.getLength();
for(int k=0;k<size;k++)
{
Node node = nodelist.item(k);
String name=node.getNodeName();
String content=node.getTextContent();
System.out.print(name);
System.out.println(":"+content);
}
}
catch(Exception e)
{
System.out.println(e);
}
}
class MyHandler extends DefaultHandler
{
String errorMessage=null;
public void error(SAXParseException e) throws SAXException
{
errorMessage=e.getMessage();
System.out.println("一般错误:"+errorMessage);
}
public void fatalError(SAXParseException e) throws SAXException
{
errorMessage=e.getMessage();
System.out.println("致命错误:"+errorMessage);
}
}
}
Price.xml文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<goods>
<名称>电视机
<price>8967元</price>
</名称>
<名称>手机
<price>2780元</price>
</名称>
</goods>
[解决办法]
你的java代码有点错误,
class MyHandler extends DefaultHandler 定义成了内部类。
因此 MyHandler handler= new MyHandler(); 这句不正确。
1. MyHandler不要定义成内部类即可;
把class MyHandler类放在class TestXML的最外面。
//TestXML.javaimport javax.xml.parsers.*;import org.xml.sax.helpers.*;import org.xml.sax.*;import java.io.*;import org.w3c.dom.*;public class TestXML { public static void main(String [] args) { try { DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); MyHandler handler= new MyHandler(); builder.setErrorHandler(handler); Document document=builder.parse(new File("Price.xml")); NodeList nodelist=document.getElementsByTagName("goods"); int size=nodelist.getLength(); for(int k=0;k<size;k++) { Node node = nodelist.item(k); String name=node.getNodeName(); String content=node.getTextContent(); System.out.print(name); System.out.println(":"+content); } } catch(Exception e) { System.out.println(e); } }[color=#FF0000]}[/color] class MyHandler extends DefaultHandler { String errorMessage=null; public void error(SAXParseException e) throws SAXException { errorMessage=e.getMessage(); System.out.println("一般错误:"+errorMessage); } public void fatalError(SAXParseException e) throws SAXException { errorMessage=e.getMessage(); System.out.println("致命错误:"+errorMessage); } }