我有以下HTML代码,我使用serializeToString()再次转换为文档对象然后再转换为字符串:
let html = `<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>Hello
</body>
</html>`;
let newHTMLDocument = new DOMParser().parseFromString( html, 'text/html' );
let head = new XMLSerializer().serializeToString(newHTMLDocument.head);
console.log(head);
&#13;
为什么头部包含:
<head xmlns="http://www.w3.org/1999/xhtml">
<title>Title</title>
</head>
如您所见,xmlns =&#34; http://www.w3.org/1999/xhtml"不是在原始字符串中,为什么serializeToString()将其添加到我的head标签中,如何阻止该函数执行此操作,因此head变量包含此字符串:
<head>
<title>Title</title>
</head>
答案 0 :(得分:1)
来自XHTML spec,第3.1.1节:
文档的根元素必须包含xmlns声明 XHTML名称空间[XMLNS]。 XHTML的命名空间定义为 http://www.w3.org/1999/xhtml。示例根元素可能如下所示:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
所以,它只是遵守标准。
要在没有序列化程序的情况下转换为文本,请执行以下操作:
let html = `<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>Hello
</body>
</html>`;
let newHTMLDocument = new DOMParser().parseFromString( html, 'text/html' );
console.log(newHTMLDocument.head.outerHTML);
&#13;