首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

java解析器解析XML文件,但总是编译不过,该如何解决

2012-04-13 
java解析器解析XML文件,但总是编译不过,这是一本XML书里的案例,是用JAVA解释器解释XML文件,让其内容显示出

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);  }  } 

热点排行