Cheerio - отступ нового элемента под родным братом? - PullRequest
0 голосов
/ 17 мая 2018

Я использую cheerio для изменения файла XML в узле.Я вставляю узел / элемент <target> после <source>, который работает с insertAfter() API в oldEl.translation.insertAfter(msgSourceEl);.

Однако я теряю свой абзац:

  <trans-unit id="title" datatype="html">
    <source>Login</source><target>iniciar sesión</target>

Возможно ли или есть способ сделать отступ для вставленного <target>iniciar sesión</target> под элементом <source>?

1 Ответ

0 голосов
/ 25 мая 2018

Просто исправьте окончательный отступ XML:

Можно использовать xml-beautifier для получения удобочитаемого XML-кода с отступами

import beautify from 'xml-beautifier';
const HumanXML = beautify(XML);
console.log(HumanXML); // => will output correctly indented elements

(ДОПОЛНИТЕЛЬНО) Нет необходимости в Cheerio:

В следующем примере мы будем использовать xml2js для манипулирования XML-файлом в виде JSON и последующей его сборки в исходном формате XML

var xml2js = require('xml2js');
var xml = "<trans-unit id=\"title\" datatype=\"html\"><source>Login</source></trans-unit>"

xml2js.parseString(xml, function (err, result) {
    result["trans-unit"].target=["iniciar sessión"]
    var builder = new xml2js.Builder();
    var xml = builder.buildObject(result);
    console.log(xml)
});

Окончательный вывод:

<trans-unit id="title" datatype="html">
  <source>Login</source>
  <target>iniciar sessión</target>
</trans-unit>

Я уверен, что вы делаете это как часть цикла, поэтому не должно быть сложным экстраполироватьпример, чтобы заставить это работать.Я предлагаю использовать underscore для обычного (каждый, карта, уменьшить, фильтр ...)

...