建议使用以下程序:
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 \nbar \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));
}
}输出如下所示:
<a>foo
bar
</a>有可能防止变压器脱离CR吗?
发布于 2019-10-17 22:55:43
如果输入的XML包含文字CR字符,它们将在解析过程中被删除。解析器将行结束规范化为单个NL字符;但如果CR转义为 ,则不适用。
因此,如果一个文本节点包含一个CR字符,XSLT处理器就会假定您已经很努力地将它放在那里,并且您确实需要它,因此它会以这样一种方式输出它:它可以在往返过程中幸免于难,在往返过程中,生成的序列化输出将由XML解析器重新处理。
当然,可以去掉XSLT代码中的CR字符,就像去掉任何其他字符一样。但这不会自动发生。
https://stackoverflow.com/questions/58431758
复制相似问题