如何使用Transformer在XML中转换字符串?

时间:2018-04-04 06:53:57

标签: java xml

我有一个函数,它将XML文档作为参数并将其写入文件。它包含元素<tag>"some text & some text": <text> text</tag>但在输出文件中它被写为<tag>"some text &amp; some text": &lt;text&gt; text</tag>但我不希望在写入文件时转义字符串。

功能是,

public static void function(Document doc, String fileUri, String randomId){
    DOMSource source = new DOMSource(doc,ApplicationConstants.ENC_UTF_8);
    FileWriterWithEncoding writer = null;
    try {
        File file = new File(fileUri+File.separator+randomId+".xml");
        if (!new File(fileUri).exists()){
            new File(fileUri).mkdirs();
        }
        writer = new FileWriterWithEncoding(new File(file.toString()),ApplicationConstants.ENC_UTF_8);
        StreamResult result = new StreamResult(writer);
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = null;
        transformer = transformerFactory.newTransformer();
        transformer.setParameter(OutputKeys.INDENT, "yes");
        transformer.transform(source, result);
        writer.close();
        transformer.clearParameters();
    }catch (IOException | TransformerException e) {
        log.error("convert Exception is :"+ e);
    }
}

1 个答案:

答案 0 :(得分:1)

XML中有五个转义字符("'<>&)。根据XML语法,他们必须在XML的某些地方进行转义,请看这个问题:

  

What characters do I need to escape in XML documents?

因此,您不能太多,以避免在文本内容中转义&<

如果您想保留“未转义”内容,可以使用CDATA部分。请看这个问题:

  

Add CDATA to an xml file