我有一个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.
这几乎是我想要的,但是在单词COVID
和seems
之间没有空格。是否可以在两个标签的内容之间添加一个空格,如果它不存在
一种选择是遍历文本节点,如果它们不存在,则在开头插入空格,例如:
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>`));