以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  XmlDocument问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=17094)


--  作者:1702king
--  发布时间:4/17/2005 8:55:00 PM

--  XmlDocument问题
import com.sun.xml.tree.XmlDocument;
这个包是在哪一文件里呢...在哪里可以下载!
--  作者:shirlywq
--  发布时间:4/25/2005 9:47:00 AM

--  
org.apache.crimson包里面有XMLDocument这个类
--  作者:1702king
--  发布时间:4/26/2005 9:31:00 PM

--  
我的程序是这样的:
/*******intro.xml************/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE myMessage [
 <!ELEMENT myMessage (message)>
 <!ELEMENT message (#PCDATA)>
]>
<myMessage>
 <message>Welcome to XML!</message>
</myMessage>

/*******ReplaceText.java(Read intro.xml)*************/
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.apache.crimson.tree.XmlDocument;
import org.xml.sax.*;

public class ReplaceText
{
 private Document document;

 public ReplaceText()
 {
  try
  {
   DocumentBuilderFactory factory=
    DocumentBuilderFactory.newInstance();
   factory.setValidating(true);
   DocumentBuilder builder=factory.newDocumentBuilder();
   builder.setErrorHandler(new MyErrorHandler());
   document=builder.parse(new File("intro.xml"));
   
   Node root=document.getDocumentElement();

   if (root.getNodeType()==Node.ELEMENT_NODE)
   {
    Element myMessageNode=(Element)root;
    NodeList messageNodes=myMessageNode.getElementsByTagName("message");

    if (messageNodes.getLength()!=0)
    {
     Node message=messageNodes.item(0);
     Text newText=document.createTextNode("New Changed Message!");
     Text oldText=(Text)message.getChildNodes().item(0);
     message.replaceChild(newText,oldText);
    }
   }
   ((XmlDocument)document).write(new FileOutputStream(intro1.xml));
  }catch(SAXParseException spe)
  {
   System.err.println("Parse Error:"+spe.getMessage());
   System.exit(1);
  }catch(SAXException se)
  {
   se.printStackTrace();
  }catch(FileNotFoundException fne)
  {
   System.err.println("File \'intro.xml\' not Found.");
   System.exit(1);
  }catch(Exception e)
  {
   e.printStackTrace();
  }
 }

 public static void main(String args[])
 {
  ReplaceText d=new ReplaceText();
 }
};

/************Error Handler for validation errors.***********/
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class MyErrorHandler implements ErrorHandler
{
 public void fatalError(SAXParseException exception)throws SAXException
 {
  throw exception;
 }
 public void error(SAXParseException e)throws SAXParseException
 {
  throw e;
 }
 public void warning(SAXParseException err)throws SAXParseException
 {
  System.err.println("Warning:"+err.getMessage());
 }
};


运行:javac ReplaceText.java MyErrorHandler.java
编译通过了
运行:java ReplaceText
提示错误:java.lang.ClassCastException
错误指向这两行:
((XmlDocument)document).write(new FileOutputStream(intro1.xml));
ReplaceText d=new ReplaceText();

请问该怎样解决呢?


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms