将JSDOM解析的XML保存为文件
Save XML parsed by JSDOM as a file
我可以这样解析 XML:
import JSDOM from "jsdom";
const myXml = "... some xml loaded from somewhere ...";
const dom = new JSDOM.JSDOM(myXml);
当我用谷歌搜索 "jsdom save xml" 时,我真的很惊讶,但我一无所获。我认为 JSDOm 是最受欢迎的 XML 操作库之一。
在一个回答中,我看到了这个:
window.document.documentElement.outerHTML
出于某种原因产生垃圾代码,例如它转换:
<Node>
<Child attr="attr"/>
<Child attr="attr"/>
<Child attr="attr"/>
<Child attr="attr"/>
</Node>
到
<Node>
<Child attr="attr">
<Child attr="attr">
<Child attr="attr">
<Child attr="attr">
</Child></Child></Child></Child>
</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;
我可以这样解析 XML:
import JSDOM from "jsdom";
const myXml = "... some xml loaded from somewhere ...";
const dom = new JSDOM.JSDOM(myXml);
当我用谷歌搜索 "jsdom save xml" 时,我真的很惊讶,但我一无所获。我认为 JSDOm 是最受欢迎的 XML 操作库之一。
在一个回答中,我看到了这个:
window.document.documentElement.outerHTML
出于某种原因产生垃圾代码,例如它转换:
<Node>
<Child attr="attr"/>
<Child attr="attr"/>
<Child attr="attr"/>
<Child attr="attr"/>
</Node>
到
<Node>
<Child attr="attr">
<Child attr="attr">
<Child attr="attr">
<Child attr="attr">
</Child></Child></Child></Child>
</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;