我有一个依赖于DOMParser解析XML的库实现。这在浏览器中工作得很好,但显然不能与Node一起工作。我尝试将JSDOM与他们自己的DOMParser一起使用,但实际上在实现上存在细微的差异,导致我的测试失败。
我正在寻找替代域处理程序,特别是htmlparser2。我需要在基本级别上做的是在htmlparser2中复制此行为:
const parser = new DOMParser();
const root: Document = parser.parseFromString(xmlString, "application/xml");我已经用htmlparser2尝试过了:
const res = parseDOM(xmlString, { xmlMode: true });但这将返回类型: Node[],而不是文档。我无论如何也找不到从htmlparser2中生成文档的文档,也找不到将我的Node[]转换为文档的方法。
问题似乎出在我的浏览器测试中(在Karma测试中模拟浏览器),测试失败是因为JSDom代码。
即使使用这样的代码:
let parser;
if(true){
parser = new DOMParser();
}else{
const JsDomParser = new JSDOM().window.DOMParser;
parser = new JsDomParser();
}测试失败。我实际上必须注释掉JSDOM的东西才能让我的测试通过。也许浏览器有不兼容的地方?
作为DOMParser替换的一部分,任何帮助实现这一点的人都会非常感激。
发布于 2021-03-06 02:40:02
在Saxon-JS中,我们使用来自https://github.com/xmldom/xmldom的xml实现,它对我们来说工作得很好,尽管我们最近没有与其他选项进行比较,而且我们的用法有点特殊,例如,它主要是只读的。此外,我们实际上并没有使用它来解析,因为我们使用了github/isaacs/sax-js --并且我们调整了这两个产品,以提高边缘情况下的XML一致性级别。
我认为我们在node.js下的xmldom和浏览器中的xmldom实现之间没有遇到任何兼容性问题。
https://stackoverflow.com/questions/66496358
复制相似问题