Проблема с синтаксическим анализом XLIFF с помощью синтаксического анализатора XML узла

Я пытаюсь разобрать файл XLIFF с помощью библиотеки xml2js. Все работает нормально, но если у меня будет что-то вроде этого: <source>Welcome to <x id="INTERPOLATION" equiv-text="{{ title }}"/> my friend</source> я получу [{"_":"Welcome to my friend","x":[{"$":{"id":"INTERPOLATION","equiv-text":"{{ title }}"}}]}]. Я в основном теряю порядок в частях предложения. Я ожидал получить массив из 3 частей:

"Welcome to "
[{"$":{"id":"INTERPOLATION","equiv-text":"{{ title }}"}}]
" my friend"

Но вместо этого я получаю:

"Welcome to my friend"
[{"$":{"id":"INTERPOLATION","equiv-text":"{{ title }}"}}]

Если бы я снова попытался воссоздать строку, я бы получил <source>Welcome to my friend<x id="INTERPOLATION" equiv-text="{{ title }}"/></source>

Есть идеи, как решить эту проблему с помощью этого парсера XML или любого другого?


person Andrei V    schedule 13.10.2020    source источник
comment
Нашел решение: я использую парсер sax. У вас есть полный контроль.   -  person Andrei V    schedule 15.10.2020


Ответы (1)


вам также может понравиться txml. Используя его как txml.parse(yourXMLString), вы получите такой объект:

[
  {
    "tagName": "source",
    "attributes": {},
    "children": [
      "Welcome to ",
      {
        "tagName": "x",
        "attributes": {
          "id": "INTERPOLATION",
          "equiv-text": "{{ title }}"
        },
        "children": []
      },
      " my friend"
    ]
  }
]

Я думаю, это выглядит абсолютно как то, что вы ищете. Трое детей внутри source очень чисты в использовании. Кроме того, этот парсер имеет размер всего 4 КБ, и нет необходимости в компиляции нативного языка c, что вызовет трудности при запуске вашего приложения на другой архитектуре.

Отказ от ответственности: я являюсь автором txml, и это мнение может быть необъективным ;-)

person Tobias Nickel    schedule 20.11.2020