【问题标题】:How to unescape string in XML using Transformer?如何使用 Transformer 对 XML 中的字符串进行转义?
【发布时间】:2018-04-04 06:53:57
【问题描述】:

我有一个函数,它将 XML 文档作为参数并将其写入文件。它包含<tag>"some text & some text": <text> text</tag> 的元素,但在输出文件中它写为<tag>"some text & some text": <text> 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);
    }
}

【问题讨论】:

  • 您是否意识到,如果您可以按照您的要求进行操作,您的输出将不再是 XML,并且不再被 XML 解析器读回?那是你要的吗?如果是,为什么?
  • 我只希望元素的文本不要被转义

标签: java xml


【解决方案1】:

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

What characters do I need to escape in XML documents?

所以你不能做太多,例如,避免在文本内容中转义 &<

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

Add CDATA to an xml file

【讨论】:

  • 我无法修改 XML 的内容
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
相关资源
最近更新 更多