0

您是否知道仅使用 JavaScript 将 HTML 标记转换为 WordML 的任何方法。我需要获取 DOM 元素的内容并将里面的内容转换为 WordML。

4

1 回答 1

0

在 npm上查看似乎还没有一个库

所以我认为你将不得不自己制作。话虽如此,这WordML只是 XML 的一种特殊风格,对吧?这是你指的WordML?

因此,要获取 DOM 元素的内容非常容易,您可以使用 jQuery 来完成。

var ele = $('#wordml-element');

从那里您现在需要将其转换为WordML兼容XML的 . 为此,您可以尝试使用npm 上的 xml 库

因此,您将把树状结构的 DOM 元素转换成树状结构的 XML 元素。这样做的推荐模式称为访问者模式

从那里您将得到一个XML结构,您可以使用相同的模式进一步操作它。最后,您会将XML结构转换为字符串,并将其保存到文件中。

现在,由于我真的不知道您要转换成的 HTML 的结构,WordML我只能为您提供一个非常通用的代码解决方案,它可能看起来像这样:

var xml = require('xml')

function onTransformButtonClick() {
  var options = {} // see documentation
  var ele = $('#wordml-element')[0]
  var wordml = transformElement(ele)
  var text = xml(wordml, options);
  fileSave(text);
}

function transformElement(ele) {
  switch(ele.tagName) { // You could use attributes or whatever
    case 'word-document':
      return transformDocument(ele);
    case 'word-body':
      return transformBody(ele);
    case 'word-p':
      return transformParagraph(ele);
    case 'word-r':
      return transformRun(ele);
    case 'word-text':
      return transformText(ele);
  }
}

function transformDocument(ele) {
  var wordDocument = xml.element({...})
  ele.childNodes.forEach(function (child) {
    wordDocument.push(transformElement(child))
  })
  return [wordDocument]
}

function transformBody(ele) {
  // create new element via xml library...
}

function transformParagraph(ele) {
  // create new element via xml library...
}

function transformRun(ele) {
  // create new element via xml library...
}

function transformText(ele) {
  // create new element via xml library...
}

由于我不知道足够的细节给你更详细的答案,我将留给你具体的实现。

于 2016-02-29T17:46:07.027 回答