XML 中是否允许使用空手道框架使用多行字符串?

Are multi-line strings allowed in XML using karate framework?

我有 2 个文件:

  1. 第一个是包含多行的文本文件:

And def txtContent = read(path-to-text-file)

txtContent为多行字符串,如:

1a
2b
3c
  1. 第二个是 xml 文件包含请求模板:
    <customizedTag>
       <time>#(send_time)<time>
       <bodyData>#(txtContent)</bodyData>
    </customizedTag>

当运行以下步骤构建body请求时,格式错误,如下:

And def send_time = LocalDateTime.now() + ''
And def txtContent = read(path-to-text-file)
And def buildBodyRequest = read(path-to-xml-template-file)
* print buildBodyRequest

buildBodyRequest 的输出与:

<customizedTag>
<time>2022-05-01T12:56:45.324104300<time>
<bodyData>1a&#13;
2b&#13;
3c</bodyData>
</customizedTag>

body请求中出现特殊字符串&#13;,make请求格式错误

如果你知道如何在空手道中 remove/replace 正文请求中的特殊字符串 &#13; ,请帮助我?谢谢!

我的预期是:

<customizedTag>
<time>2022-05-01T12:56:45.324104300<time>
<bodyData>1a
2b
3c</bodyData>
</customizedTag>

The special string appeared in the body request and its make request is wrong format.

在Windows文本文件中,换行符由两个字符组成,回车return(CR,字符代码13)和换行符(LF,字符代码10)。这种组合通常称为 CRLF。

这里的 &#13; 代表 CR,但 LF 也在那里 - 这就是导致线条在视觉上中断的原因:

<customizedTag>
    <time>2022-05-01T12:56:45.324104300</time>
    <bodyData>1a&#13;
2b&#13;
3c</bodyData>
</customizedTag>

解析此 XML 后,&#13; 将被转换回 CR,这意味着 <bodyText> 将包含与您的文本文件完全相同的内容。

所以从技术上讲,没有错。一切都按预期工作,你真的不应该有任何问题。 (这很重要。 你需要弄清楚 &#13; 给你带来问题的原因,你最好修复 那个,而不是“修复”XML,因为 XML 没有损坏。)

但是如果出于某种原因您不喜欢 &#13; 出现在您的 XML 中,您必须更改您的源文本文件。在适当的文本编辑器中打开它(即 not Windows 记事本),将行结束类型更改为 Linux(只是 LF,没有 CR),然后保存它。

在这两种情况下,<bodyText> 的内容将与其来源的文本文件完全相同。