【发布时间】:2021-06-25 04:26:44
【问题描述】:
我有这个问题,我需要发送到需要根标记具有 xml 数据的soap webservice,这是我要发送的 xml:
<root><test key="Applicants">this is a data</test></root>
我需要将此代码作为文档附加到 SoapBody 对象中:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setExpandEntityReferences(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document result = builder.parse(new ByteArrayInputStream(request.getRequest().getBytes()));
然后将其添加到 SoapBody 以发送到 Web 服务。
但是,在发送此请求并跟踪日志时,它实际上是在还原“”字符到文字引号 (")
这是正在发送的 xml:
<root><test key="Applicants">this is a data</test></root>
如您所见," 正在转换为文字引号,我怎样才能将原始数据保留在根标记中(其中有 ")?当我将其转换为文档时,它似乎正在转换它对象。
不胜感激。谢谢。
编辑:
Web 服务实际上需要这种格式(来自他们的文档和示例 xml 请求),如果这不可能,是否有限制?我应该使用其他框架吗?
【问题讨论】:
-
只有在属性值中才需要转义引号。作为标签之间的文本,它们不需要转义,因此结果是完全有效的 XML。没有什么可修复的,因为没有什么问题。
-
如果是webservice的要求怎么办,应该转换成" (如他们的文档和示例 xml 请求中所写)?这是一个限制吗?谢谢。
-
所有 XML 解析器都会以完全相同的方式解析
&quot;和"。通常对属性和文本使用统一的 XML 编码器,因此它们将"转义为&quot;,但这只是方便。标签之间的文本不需要转义,但可以这样做。忽略这个问题,它会正常工作的。