Проблема с парсером 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'>"A1:B3:no:A1:B3:0"</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>"A1:B3:no:A1:B3:0"</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.
- в моем вводе xml я использую одинарные кавычки для всех атрибутов и значений, но в проанализированном XML он заменяет их двойными кавычками.
- Как избавиться от неопределенных тегов.
- Как мне вернуть заголовок XML в проанализированный XML.
Пожалуйста, предложите мне необходимые изменения.