2012-01-24 81 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。