Javascript 将JSDOM解析的XML另存为文件

Javascript 将JSDOM解析的XML另存为文件,javascript,node.js,xml,jsdom,Javascript,Node.js,Xml,Jsdom,我可以像这样解析XML: import JSDOM from "jsdom"; const myXml = "... some xml loaded from somewhere ..."; const dom = new JSDOM.JSDOM(myXml); 当我在谷歌上搜索jsdom保存xml时,我真的很惊讶,但什么也没有得到。我认为JSDOm是最流行的XML操作库之一 在一个答案中,我看到了这一点: window.document.documentElement.outerHTML

我可以像这样解析XML:

import JSDOM from "jsdom";
const myXml = "... some xml loaded from somewhere ...";
const dom = new JSDOM.JSDOM(myXml);
当我在谷歌上搜索jsdom保存xml时,我真的很惊讶,但什么也没有得到。我认为JSDOm是最流行的XML操作库之一

在一个答案中,我看到了这一点:

window.document.documentElement.outerHTML
由于某种原因产生垃圾代码,例如,它转换:

<Node>
   <Child attr="attr"/>
   <Child attr="attr"/>
   <Child attr="attr"/>
   <Child attr="attr"/>
</Node>

它还以以下内容开始文档:

<html><head></head><body><globe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

请注意,Globe是源XML的根元素。它还以小写形式生成所有内容。

保存文档的方法是正确的。但是解析的方法是错误的。JSDOM需要HTML并创建浏览器DOM的实例。而且它必须如此使用,因此步骤与在浏览器中解析XML时相同:

// Create empty DOM, the imput param here is for HTML not XML, and we don want to parse HTML
const dom = new JSDOM.JSDOM("");
// Get DOMParser, same API as in browser
const DOMParser = dom.window.DOMParser;
const parser = new DOMParser;
// Create document by parsing XML
const document = parser.parseFromString(xml, "text/xml");

// save the xml after modifications 
const xmlString = document.documentElement.outerHTML;

保存文档的方法是正确的。但是解析的方法是错误的。JSDOM需要HTML并创建浏览器DOM的实例。而且它必须如此使用,因此步骤与在浏览器中解析XML时相同:

// Create empty DOM, the imput param here is for HTML not XML, and we don want to parse HTML
const dom = new JSDOM.JSDOM("");
// Get DOMParser, same API as in browser
const DOMParser = dom.window.DOMParser;
const parser = new DOMParser;
// Create document by parsing XML
const document = parser.parseFromString(xml, "text/xml");

// save the xml after modifications 
const xmlString = document.documentElement.outerHTML;

您可能需要告诉JSDOM它没有解析HTML。是的,它似乎将文档解释为HTML。这并不是很明显,因为选择器等都起作用了。你可能需要告诉JSDOM它没有解析HTML。是的,它看起来像是将文档解释为HTML。这并不是很明显,因为选择器等都起作用了。