【问题标题】:prevent java transformer from replacing防止java变压器更换
【发布时间】:2012-02-02 18:39:31
【问题描述】:

我有这个 XML 文件

<test>&#13; &#xD; &lt;</test>

我正在使用下面的 java 代码对其进行转换,xslt 文件只是复制了 xml

public class XMLTransform {

    public static void main(String[] args) {

        try {
            StreamSource source = new StreamSource(new File("file.xml"));
            StreamSource stylesource = new StreamSource(new File("trans.xsl"));
            SAXTransformerFactory transformFactory = (SAXTransformerFactory) TransformerFactory.newInstance(); 
            Transformer transformer = transformFactory.newTransformer(stylesource);
            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");         
            transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
            StreamResult result = new StreamResult(System.out);
            transformer.transform(source,result);
        }
        catch (Exception e) {
            e.printStackTrace();
        }

    }
}

我的问题是 java 将规范的回车 替换为 这是 ascii 字符。

有关如何保留回车的规范名称的任何帮助?

【问题讨论】:

  • 不是“规范的”。你能引用一个权威说它是吗?并解释为什么它很重要?这听起来像是一个 X-Y 问题。

标签: java transformer


【解决方案1】:

您确实意识到这些是完全相同的字符,只是十进制形式 (&amp;#13) 与十六进制形式 (&amp;#xD)(与 ascii 本身无关)。

【讨论】:

  • 是的,我确实意识到了这一点。但是有可能保留规范的吗?无论如何可能......
  • 有没有什么transformer.setOutputProperty 选项可以帮助我解决这个问题?也许我错过了什么......
  • @user685415 - 是什么让一个“规范”而不是另一个?在某处的规范中?
  • 有没有办法保留十六进制?我应该换一个变压器还是什么?我真的很需要......
  • 我怀疑有没有办法使用标准的 java xml 库来控制它。是的,您可能需要寻找第三方库来更改实体的编写方式。
【解决方案2】:

我发现 SAXON 转换器没有做这个修改。 谢谢你的回答。

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多