Получить текстовые узлы отдельно (в правильном порядке) с помощью fast-xml-parser?

Независимо от того, какие варианты я пробую, мне кажется, что все текстовые узлы сгруппированы вместе, без какой-либо информации о том, где были вставлены внутренние узлы XML. Это проще объяснить на простом примере:

<a>left <b>middle</b> right</a>

Я ожидаю, что это даст мне что-то вроде этого:

{
  tag: 'a',
  children: [
    'left ',
    { tag: 'b', children: ['middle'] },
    ' right',
  ]
}

Точный формат не имеет значения, но middle между left а также right. Для меня важен порядок дочерних элементов. Сfast-xml-parser, вместо этого я получаю следующее:

{
  "a": {
    "#text": "left  right",
    "b": "middle",
  }
}

Я не возражаю против другого формата, но я потерял информацию о положении <b>middle</b>узел. В древовидной версии XML-файла на основе JavaScript невозможно различить эти файлы, поскольку все они анализируются в одну и ту же структуру.

<a>left  right<b>middle</b></a>

<a><b>middle</b>left  right</a>

<a>left <b>middle</b> right</a>

<a>le<b>middle</b>ft  right</a>

Есть ли опция, которая позволит мне сохранить порядок текстовых узлов?

1 ответ

Решение

К сожалению, похоже, что ответ в том, что эта опция просто недоступна вfast-xml-parser, в соответствии с этой проблемой я обнаружил: https://github.com/NaturalIntelligence/fast-xml-parser/issues/175. Текстовые узлы будут объединены в один, и член команды объяснит, что это "не ошибка, а ожидаемое поведение".

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