JavaScript在解析XML字符串时在句子之间添加空格



我有一个XML字符串,我要在文档中显示为文本:

<p>The new strain of <s alias="coronavirus">COVID</s>seems to be having a greater spread rate.</p>

下面的函数返回XML的文本形式:

function stripHtml(html) {
// Create a new div element
var temporalDivElement = document.createElement("div");
// Set the HTML content with the providen
temporalDivElement.innerHTML = html;
// Retrieve the text property of the element (cross-browser support)
return temporalDivElement.textContent || temporalDivElement.innerText || "";
}

问题是,这个函数返回以下字符串:

The new strain of COVIDseems to be having a greater spread rate.

这几乎是我想要的,但是在单词COVIDseems之间没有空格。是否可以在两个标签的内容之间添加一个空格,如果它不存在

?

一种选择是遍历文本节点,如果它们不存在,则在开头插入空格,例如:

const getTextNodes = (parent) => {
var walker = document.createTreeWalker(
parent,
NodeFilter.SHOW_TEXT, 
null, 
false
);
var node;
var textNodes = [];
while(node = walker.nextNode()) {
textNodes.push(node);
}
return textNodes;
}

function stripHtml(html) {
// Create a new div element
var temporalDivElement = document.createElement("div");
// Set the HTML content with the providen
temporalDivElement.innerHTML = html;
// Retrieve the text property of the element (cross-browser support)
for (const node of getTextNodes(temporalDivElement)) {
node.nodeValue = node.nodeValue.replace(/^(?!s)/, ' ');
}
return temporalDivElement.textContent.replace(/  +/g, ' ').trim();
}
console.log(stripHtml(`<p>The new strain of <s alias="coronavirus">COVID</s>seems to be having a greater spread rate.</p>`));

最新更新