【问题标题】:How to return raw XML from a fetch request? [closed]如何从获取请求中返回原始 XML? [关闭]
【发布时间】:2019-09-29 18:29:37
【问题描述】:

我必须从服务器检索 XML 数据。我正在使用 Fetch,因为我需要一种兼容异步/等待的方式来发出 HTTP 请求。

但是在通过 fetch 检索数据时使用 resp.text() 会导致它转义所有引号和换行符。

结果应该是这样的:

<?xml version="1.0" encoding="UTF-8"?><data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <value var_id="v04" xsi:type="ELEMENT">hello</value>
</data>

它实际上是这样的:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?><data xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n      <value var_id=\"v04\" xsi:type=\"ELEMENT\">hello</value>\n</data>\n"

无论如何我可以防止这种情况并接收原始 XML?或者,无论如何要将其解析回其原始形式?谢谢。

【问题讨论】:

  • 可以用 Postman 来复查吗?你应该在那里得到相同的结果
  • 这实际上并没有转义 - 它只是在您查看文本时在控制台中打印它,以便您可以复制/粘贴它:]
  • 我用 CURL 检查过。它肯定是用双引号将整个内容括起来,并在 XML 中转义引号。

标签: node.js xml fetch-api


【解决方案1】:

在 node-fetch 中执行 .text 就可以了:

    return consumeBody.call(this).then(buffer => buffer.toString());

这就是.text的源代码

这只是一个节点Buffer#toString() - 它不会以某种方式转义。

Node.js 在打印它们之前会转义字符串,以便您可以使用它们并复制粘贴它们。

请放心 - 这只是 UI 可见性功能 - 不是实际的文本转义更改 :)

【讨论】:

  • 你是绝对正确的。原来是 JSON.stringify 函数稍后在对其进行字符串化的代码中。
  • 是的,这是有道理的,JSON.stringify 就是这样做的。如果此答案解决了您的问题,请考虑accepting it
  • 是的,只需等待 3 分钟即可接受。谢谢。
猜你喜欢
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 2011-04-29
  • 1970-01-01
相关资源
最近更新 更多