Получить текстовые узлы отдельно (в правильном порядке) с помощью 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. Текстовые узлы будут объединены в один, и член команды объяснит, что это "не ошибка, а ожидаемое поведение".