Javascript 使用CreateContexturalFragment解析XML不会';不处理自动关闭标签?

Javascript 使用CreateContexturalFragment解析XML不会';不处理自动关闭标签?,javascript,xml,parsing,Javascript,Xml,Parsing,我已经使用DOMParser成功地在JavaScript中解析XML,并尝试使用document.createRange().createContextalFragment,因为性能似乎更好 我发现,虽然DOMParser可以很好地处理自动关闭标记,但在使用createcontextalfragment时,它们不会被处理,导致后续元素嵌套在它们下面。我创建了一个JSFIDLE,在这里演示了这种差异 所以我的问题是,为什么CreateContextationalFragment会这样做?看起来所有

我已经使用DOMParser成功地在JavaScript中解析XML,并尝试使用
document.createRange().createContextalFragment
,因为性能似乎更好

我发现,虽然DOMParser可以很好地处理自动关闭标记,但在使用createcontextalfragment时,它们不会被处理,导致后续元素嵌套在它们下面。我创建了一个JSFIDLE,在这里演示了这种差异

所以我的问题是,为什么CreateContextationalFragment会这样做?看起来所有浏览器的行为都是一样的,所以它必须符合规范


我试着跟着,但有点过头了。可能我的字符串被检测为HTML文档而不是XML?

可能是因为对HTML文档调用了document.createRange?也许你可以尝试一下与createRange等价的xml文档。事实上,一旦我知道如何从domdocument中获取一个范围,并修复了你的xml,使其成为一个有效的标记字符串(没有xml声明位)-它可以工作-啊哈,确实可以!我想我以前读过这里的解释,但它没有完全理解“如果范围属于设置了HTMLness位的文档,则使用HTML片段解析算法”。我对您的代码进行了一些调整,以便在不使用DOMParser的情况下获取XML文档,因为我希望避免使用它。您知道为什么XML声明对CreateContexturalFragment无效,但DOMParser不介意解析它吗?(这里肯定不是XML专家)你也可以写下你的答案,这样我就可以接受了。