首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Transformer转义CR

Transformer转义CR
EN

Stack Overflow用户
提问于 2019-10-17 19:38:19
回答 1查看 44关注 0票数 0

建议使用以下程序:

代码语言:javascript
复制
    import java.io.StringReader;

    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;

    public class CrDemo {
        public static void main(String[] args) throws Exception {
            final String xml = "<a>foo&#13;\nbar&#13;\n</a>";
            final TransformerFactory tf = TransformerFactory.newInstance();
            final Transformer t = tf.newTransformer();
            t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
            t.setOutputProperty(OutputKeys.INDENT, "no");
            t.setOutputProperty(OutputKeys.STANDALONE, "yes");
            t.transform(new StreamSource(new StringReader(xml)), new StreamResult(System.out));
        }
    }

输出如下所示:

代码语言:javascript
复制
    <a>foo&#13;
    bar&#13;
    </a>

有可能防止变压器脱离CR吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 22:55:43

如果输入的XML包含文字CR字符,它们将在解析过程中被删除。解析器将行结束规范化为单个NL字符;但如果CR转义为&#13;,则不适用。

因此,如果一个文本节点包含一个CR字符,XSLT处理器就会假定您已经很努力地将它放在那里,并且您确实需要它,因此它会以这样一种方式输出它:它可以在往返过程中幸免于难,在往返过程中,生成的序列化输出将由XML解析器重新处理。

当然,可以去掉XSLT代码中的CR字符,就像去掉任何其他字符一样。但这不会自动发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58431758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档