Знаете ли вы какой-либо способ конвертировать теги HTML в WordML только с помощью JavaScript. Мне нужно получить содержимое элемента DOM и преобразовать то, что внутри, в WordML.
Преобразование тегов HTML в WordML с помощью JavaScript
Ответы (1)
Глядя на npm похоже, что для этого уже нет библиотеки.
Так что я думаю, вам придется сделать свой собственный. При этом WordML
— это всего лишь разновидность XML, верно? Вы имеете в виду WordML?
Таким образом, получить содержимое элемента DOM довольно просто, вы можете сделать это с помощью jQuery.
var ele = $('#wordml-element');
Оттуда вы теперь захотите преобразовать его в WordML
совместимый XML
. Вы можете попробовать использовать для этого библиотеку xml на npm.
Таким образом, вы будете преобразовывать элементы 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...
}
Конкретные реализации которых я оставлю на ваше усмотрение, так как я не знаю достаточно подробностей, чтобы дать вам более подробный ответ.
ele[0].tagName
, так как это селектор jQuery, а не собственный элемент DOM.
- person dmeglio; 29.02.2016
<word-document>
, если хотите, но, может быть, он использует <div kind="word-document">
. Я не знаю, но это было бы совсем другое, если включить: ele.attr('kind')
. Идея заключается в том, что посетитель ориентируется на некое идентифицирующее значение. Но вы правы насчет ele[0]
, если только вы не хотите использовать jquery для получения имени тега. Я обновлю фрагмент.
- person justin.m.chase; 29.02.2016