为什么我尝试将 text/xml 转换为对象时得到 {"location": null}?

Why am I getting a {"location": null} when I try to convert a text/xml into an object?

我正在尝试了解 DOMParser 行为,但出了点问题,我不知道如何找到问题所在。这是一个简单的代码,用于解析包含 XML:

文本的字符串

const xml = '<data>Hello World</data>'

const parser = new DOMParser()
const result = parser.parseFromString(xml, 'text/xml')

alert(JSON.stringify(result))

如您所见,我收到了 {"location": null}。谁能给我解释一下这是怎么回事 location?如何按照文档的建议将此字符串解析为对象?

请使用以下脚本:- Html-

<p id="demo"></p>

Javascript -

<script>
var parser, xmlDoc;
var text = "<data>Hello`enter code here` World</data>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue;
</script>

如你所愿。

Document returned from parseFromString() is not JSON, if you want to stringify the result, use an XMLSerializer.

const xml = '<data>Hello World</data>';
const doc = new DOMParser().parseFromString(xml, 'text/xml');
const docString = new XMLSerializer().serializeToString(doc);
console.log(docString);

来自文档-

The DOMParser interface provides the ability to parse XML or HTML source code from a string into a DOM Document.

因此,它正在将 XML 或 HTML 转换为 DOM Document, not JSON。因此,结果无法显示 alert(JSON.stringify(result))

的任何结果
const xml = '<data>Hello World</data>'

const parser = new DOMParser()
const result = parser.parseFromString(xml, 'text/xml')
console.log(result); 

Output:
#Document
<data>Hello World</data>

对于您的预期结果,请使用 XMLSerializer

let s = new XMLSerializer();
console.log(s.serializeToString(result));

parseFromString returns 保存文本解析表示的文档 object,例如:

const xml = '<data>Hello World</data>'

const parser = new DOMParser()
const result = parser.parseFromString(xml, 'text/xml')

console.log(result)

您可以在console.log()中看到完整的对象。根据您对 "location": null 来源的关注,目前尚不清楚返回文档的 URL 应该是什么。

您可以从 here 了解更多关于 parseFromString 的信息。