2012-01-24 48 views
2

我实现下面的代码我的Java应用程序中现在Java的XML编码错误

//create string from xml tree 
      StringWriter sw = new StringWriter(); 
      StreamResult result = new StreamResult(sw); 
      DOMSource source = new DOMSource(doc); 
      trans.transform(source, result); 
      String xmlString = sw.toString().replaceAll("&[^;]+?;", ""); //Replace invalid HTML characters 

      //print xml 
      System.out.println("The XML is:\n\n" + xmlString); 

      OutputStream out = new FileOutputStream(dir.getSearchFileOutputDirectory() + "\\" + "output.xml"); 

      //Write the XML to disk 
      out.write(xmlString.getBytes("ISO-8859-1")); 
      out.close(); 

,如果我运行这个在NetBeans中,XML文件呈现完美的Chrome,IE和Firefox中。但是,一旦我清理并构建代码,然后运行独立的JAR文件,浏览器报告文件中的编码错误,并且无法呈现它。

事情是他们在失败的行并不真正包含任何不寻常的东西,只是标准的ASCII字符,我可以看到。

任何人都可以阐明为什么这可能会发生?我必须明天演示代码,现在我正陷入恐慌之中,为什么它突然做了这个奇怪的事情......

任何输入将不胜感激。

感谢

托尼

+1

你是否对每种方式生成的文件做了差异? –

回答

1

由于您在字符和字节级别摆弄文件,而不是使用支持XML的工具,编码完全是您的责任。您似乎没有试图确保用于编写输出流的编码与出现在XML声明中的编码相同,因此这种失败似乎是不可避免的。

0

XML不是HTML。替换操作是一件坏事。如果你的样式表说输出是HTML,那么它就会起作用。如果它表示输出是XML,则不要尝试将其用作HTML。