Проблема с парсером fast-xml-parser

У меня есть случай использования, когда входной XML-файл необходимо преобразовать в объект JSON, а после внесения некоторых изменений в тот же объект JSON его необходимо проанализировать обратно в XML. Для этого я использую fast-xml-parser. Проблема в том, что когда я пытаюсь преобразовать объект JSON обратно в XML, он добавляет какой-то неопределенный тег.

вот мой ввод XML

<?xml version='1.0' encoding='utf-8' ?>

<!-- build 20203.20.0801.1333                               -->
<workbook  xmlns:user='http://www.tableausoftware.com/xml/user'>
<metadata-records>
        <metadata-record class='capability'>
        <remote-name />
        <remote-type>0</remote-type>
        <parent-name>[Sheet1]</parent-name>
        <remote-alias />
        <aggregation>Count</aggregation>
        <contains-null>true</contains-null>
        <attributes>
          <attribute datatype='integer' name='context'>0</attribute>
          <attribute datatype='string' name='gridOrigin'>&quot;A1:B3:no:A1:B3:0&quot;</attribute>
          <attribute datatype='boolean' name='header'>true</attribute>
          <attribute datatype='integer' name='outcome'>6</attribute>
        </attributes>
      </metadata-record>  </metadata-records>
</workbook>

и вывод:

<workbook  xmlns:user="http://www.tableausoftware.com/xml/user">
 <metadata-record class="capability">
            <remote-name/>
            <remote-type>0</remote-type>
            <parent-name>[Sheet1]</parent-name>
            <remote-alias/>
            <aggregation>Count</aggregation>
            <contains-null>true</contains-null>
            <attributes>
              <attribute datatype="integer" name="context">
                <undefined>0</undefined>
              </attribute>
              <attribute datatype="string" name="gridOrigin">
                <undefined>&quot;A1:B3:no:A1:B3:0&quot;</undefined>
              </attribute>
              <attribute datatype="boolean" name="header">
                <undefined>true</undefined>
              </attribute>
              <attribute datatype="integer" name="outcome">
                <undefined>6</undefined>
              </attribute>
            </attributes>
          </metadata-record>
 </metadata-records>
</workbook>

вот варианты

var xml2JSONOptions = {
  ignoreAttributes: false,
  ignoreNameSpace: false,
  allowBooleanAttributes: true,
  supressEmptyNode: true,
  attrValueProcessor: (val, attrName) =>
    he.decode(val, { isAttributeValue: true })
};

var json2XMLOptions = {  ignoreAttributes: false,
  ignoreNameSpace: false,
  allowBooleanAttributes: true,
  format: true,
  indentBy: '  ',
  supressEmptyNode: true,
  attrValueProcessor: a =>
    he.encode(a, { isAttributeValue: true, useNamedReferences: true }) // default is a=>a
};

Я хочу, чтобы мой проанализированный XML был таким же, как входной XML.

  1. в моем вводе xml я использую одинарные кавычки для всех атрибутов и значений, но в проанализированном XML он заменяет их двойными кавычками.
  2. Как избавиться от неопределенных тегов.
  3. Как мне вернуть заголовок XML в проанализированный XML.

Пожалуйста, предложите мне необходимые изменения.

0 ответов

Другие вопросы по тегам