我正在尝试将 ProseMirror 的 JSON 输出转换回 HTML(将它从一个数据库保存到另一个数据库)。我是 ProseMirror 的新手,我不确定我是否完全理解模型、状态和模式之间的关系。
从我阅读的内容来看https://github.com/ProseMirror/prosemirror/issues/455和https://discuss.prosemirror.net/t/example-of-converting-between-formats-for-the- purpose-储蓄/424 ,
我应该首先基于基本模式创建一个新状态,然后使用 DOMSerializer 并将输出附加到一个临时元素(然后获取 innerHtml)。那个听起来是对的吗?任何帮助将不胜感激。
经过一番挖掘,这是我如何让它工作的:
我的代码如下。
const { schema } = require("prosemirror-schema-basic")
const { Node, DOMSerializer } = require("prosemirror-model")
const jsdom = require("jsdom").JSDOM
let dom = new jsdom('<!DOCTYPE html><div id="content"></div>')
let doc = dom.window.document
let target = doc.querySelector("div")
//Demo JSON output from ProseMirror
let content = {
"doc": {
"type": "doc",
"content": [{
"type": "paragraph",
"attrs": {
"align": "left"
},
"content": [{
"type": "text",
"text": "My sample text"
}]
}]
},
"selection": {
"type": "text",
"anchor": 16,
"head": 16
}
}
let contentNode = Node.fromJSON(schema, content.doc)
DOMSerializer
.fromSchema(schema)
.serializeFragment(contentNode.content, {
"document": doc
}, target)
console.log(doc.getElementById("content").innerHTML)
//<p>My sample text</p>Run Code Online (Sandbox Code Playgroud)