使用JavaScript将HTML标记转换为WordML

时间:2016-02-29 12:23:12

标签: javascript html wordml

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

1 个答案:

答案 0 :(得分:0)

在npm there doesn't seem to be a library上查看此内容。

所以我认为你必须自己做。话虽如此,WordML只是一种特殊的XML风格,对吗?你指的是This is the WordML

因此,要获得DOM元素的内容非常简单,可以使用jQuery来实现。

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

现在,您可以将其转换为WordML兼容XML。您可以尝试使用xml library on npm

因此,您将把树结构化DOM元素转换为树结构化XML元素。这样做的推荐模式称为Visitor Pattern

从那里你将留下XML结构,你可以使用相同的模式进一步操作。最后,您将XML结构转换为字符串,这将保存到文件中。

既然我真的不知道你想要转换成WordML的HTML的结构,我只能给你一个非常通用的代码解决方案,这可能看起来像这样:

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...
}

由于我不了解足够的详细信息以便为您提供更详细的答案,因此具体实施我将留给您。