读书人

java解析器解析XML文件但总是编译不

发布时间: 2012-04-13 13:50:24 作者: rapoo

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的最外面。

Java code
//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);  }  } 

读书人网 >XML SOAP

热点推荐