Java DOM Transformer-XML创建不需要';t在最终的xml中替换撇号和引号

Java DOM Transformer-XML创建不需要';t在最终的xml中替换撇号和引号,java,xml,Java,Xml,我试图创建一个XML,并根据输入将其作为响应返回给调用方 transformer在大多数部分都能正常工作,但它不会将撇号和引号转换为它们的XML等价物。下面是我正在使用的代码 DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder=docFactory.newDocumentBuilder(); //根元素 Document doc=docBuilder.

我试图创建一个XML,并根据输入将其作为响应返回给调用方

transformer在大多数部分都能正常工作,但它不会将撇号和引号转换为它们的XML等价物。下面是我正在使用的代码

DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
//根元素
Document doc=docBuilder.newDocument();
Element rootElement=doc.createElement(“模板”);
doc.appendChild(rootElement);
/*添加助理ID*/
元素行=doc.createElement(“行”);
line.appendChild(doc.createTextNode(“----&--------------\”);
Attr Attr1=doc.createAttribute(“Attr1”);
属性1.设置值(“属性值1”);
行。setAttributeNode(Attr1);
Attr Attr2=doc.createAttribute(“Attr2”);
属性2.设置值(“属性值2”);
行。setAttributeNode(Attr2);
根元素。追加子元素(行);
//将内容写入xml文件
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
DOMSource=新的DOMSource(doc);
//输出到字符串
StringWriter编写器=新的StringWriter();
StreamResult结果=新的StreamResult(writer);
变换(源、结果);
字符串strResult=writer.toString();
//返回escapeXml(strResult);
System.out.println(strResult);
结果输出

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<template>
    <line Attr1="attribute value 1" Attr2="attribute value 2">----&amp;----&lt;------&gt;------'-----"--------</line>
</template>

----&;--------------”--------
预期结果

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<template>
    <line Attr1="attribute value 1" Attr2="attribute value 2">----&amp;----&lt;------&gt;------&apos;-----&quot;--------</line>
</template>

----&----------------&载脂蛋白-----"--------
起初,我以为可以在将这些字符作为输入发送到transformer之前对其进行转义,但它将所有的“与”符号替换为其等效的
“&;“
。如果在创建最终XML后替换撇号或引号,则它也会替换属性

我想我们可以用两种方法来解决这个问题

  • 我可以在添加到节点之前转换
    &,<,>,',“
    ,而transformer会忽略它
  • 明确指示transformer将
    ',“
    转换为等效的XML
  • 目前我还不知道如何实现这些目标。有人能帮我吗?或者如果有更好的解决方案来创建有效的XML,我会非常感激


    谢谢。

    为什么要转义引号和撇号?XML不要求转义引号和撇号(属性中与属性分隔符冲突的情况除外)。序列化程序知道它在做什么:相信它。

    如果我在创建最终XML后替换撇号或引号,它也会替换属性。听起来你的“替换”代码是错误的。你能提出你的问题并发布你用来替换
    的代码吗“?目前它在我的用例中运行良好,引号和撇号是一些边缘用例,我想在它发布之前测试它们。谢谢