我的html中有標記機制,它在呈現html時觸發我的項目中的java類。目的是對作爲參數提供的xml進行轉換,並將轉換後的結果插入到html中。XML Transformer在本地工作時奇怪地將xml轉換爲服務器上的空字符串
<br>Test customTag<br>
<@myWebsite.customTag xmlPath="C:/paths/personalInfo.xml" xsltPath="C:/paths/template.xslt"/>
在customTag類,我使用 「的javax.xml.transform.Transformer」 由XSLT字符串轉換爲 「XML」 字符串。爲此,我只是有以下幾行;
//Reading the files in the paths given in the url, and converting them into String.
String xmlContent = convertToString(xmlPath);
String xsltContent = convertToString(xsltPath);
鑑於它們的值如following example所示; 而且我有以下代碼進行轉換。
StringReader readerXML = new StringReader(xmlContent);
StringReader readerXSLT = new StringReader(xsltContent);
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(readerXSLT);
Transformer transformer = null;
StringWriter writer = new StringWriter();
StreamSource in = new StreamSource(readerXML);
StreamResult out = new StreamResult(writer);
transformer.transform(in, out);
logger.debug("The generated HTML file is:" + writer.toString());
問題是它在我的本地應用程序服務器(Windows)中工作,正在打印預期內容。但是,當我將它部署到Linux服務器時,轉換隻是空的。我知道兩臺服務器之間唯一的區別是我的本地是Windows,而遠程服務器是Unix。
在Linux服務器日誌中沒有例外或者什麼。一切似乎都在本地進行。這是相當煩人的,但。
任何想法爲什麼「javax.xml.transform.Transformer」在這種情況下沒有完成其工作?
編輯:Java供應商很常見:IBM的Java庫。
地方: Java版本 「J9VM - R26_Java626_SR8」
Unix服務器 Java版本 「J9VM - R26_Java626_SR1」
日誌片段: 本地和服務器具有相同的日誌結果對於以下行: logger.debug(「doTag()xmlContent:」+ xmlContent);
logger.debug(「doTag()xsltContent:」+ xsltContent);
只有不同的日誌是以下的結果;在本地打印新的xml,但爲unix打印一個空字符串。
logger.debug(「生成的HTML文件是:」+ writer.toString());
另外一件可能不同的事情是Java版本和它的供應商。你在linux機器上使用Oracle Java還是OpenJDK? – 2015-03-19 13:12:55
謝爾蓋,我根據你想要的細節編輯了這個問題。日Thnx。 – shamaleyte 2015-03-19 13:26:43
你還可以添加日誌片段嗎? – 2015-03-19 13:32:05