1

出于某种原因,我试图用字符串包围参数sExtraParameter, sExtraParameter2,以获得“漂亮打印”的拉丁字符。但是每次我检查 xml 输出时,它仍然显示错误的解析字符。sExtraParameter3<![CDATA[ ]]>

那么,是否有另一种方法可以将 CDATA 应用于此参数?

public static Element xslTransformJDOM(File xmlFile, String xslStyleSheet, String sExtraParameter, String sExtraParameterValue, String sExtraParameter2, String sExtraParameterValue2, String sExtraParameter3,String sExtraParameterValue3 ) throws JDOMException, TransformerConfigurationException, FileNotFoundException, IOException{

    try{

        Transformer transformer = TransformerFactory.newInstance().newTransformer(new   StreamSource(xslStyleSheet));
        transformer.setParameter(sExtraParameter, sExtraParameterValue);
        transformer.setParameter(sExtraParameter2, sExtraParameterValue2);
        transformer.setParameter(sExtraParameter3, sExtraParameterValue3);

        JDOMResult out = new JDOMResult();

        transformer.transform(new StreamSource(xmlFile), out);

        Element result = out.getDocument().detachRootElement();

        setSize(new XMLOutputter().outputString(result).length());

        return result;

    }
    catch (TransformerException e){
        throw new JDOMException("XSLT Transformation failed", e);
    }
}

编辑:

我正在跟进我老板的一个项目,由于这些原因,我没有在这里向你展示整个代码。

4

1 回答 1

2

也许我错过了这个问题,但是 API(http://docs.oracle.com/javaee/1.4/api/javax/xml/transform/Transformer.html#setParameter(java.lang.String, java.lang.Object ) ) 对于 setParameter 不期望

value - 值对象。这可以是任何有效的 Java 对象。由处理器提供适当的对象强制或简单地传递对象以在扩展中使用。

  1. 假设您使用的是 JDOM,这可能会因实现而异。
  2. 可能有一个 CDATA xml 元素,然后会被正确处理。也许: http: //www.jdom.org/docs/apidocs/org/jdom2/CDATA.html
  3. 您仍然可以考虑将序列化程序设置设置为某种空白保留。http://www.jdom.org/docs/apidocs.1.1/org/jdom/output/Format.TextMode.html
于 2013-10-29T22:14:27.557 回答