Разбор с помощью fscanf (), игнорирующий пробелы или пропущенные значения?

0

Я пытаюсь отсканировать текстовый файл с помощью XML, у XML есть несколько элементов с этой структурой:

<enemy>
  <type> 0 </type>
  <x> 273 </x>
  <y> 275 </y>
  <event> </event>
</enemy>

Проблема в том, что xml может иметь пробелы между тегами или внутри них. Я создал цикл, и я пытаюсь сделать одно сканирование в каждой итерации, чтобы получить тип int, x, y и event в каждую переменную. Однако я не знаю, как игнорировать пробелы и как обрабатывать отсутствующие значения, поскольку некоторые теги могут иметь или не иметь значения (например, события).

Как я могу отсканировать этого "врага" без учета пробелов и отсутствующих значений?

Теги:

1 ответ

1

Это просто: вы не разбираете XML, используя fscanf(). Используйте настоящий синтаксический анализатор XML, иначе у вас будет очень сложный код, который не будет работать в 80% случаев, возвращая неверные данные или сбой.

Формат XML (несмотря на кажущуюся простоту) усложняется даже в самых безобидных случаях, и существующие XML-парсеры существуют по какой-то причине. См. Libxml или много других.

Тем не менее, если вы чертовски разбираетесь в XML-анализе, правильный способ сделать это - сначала подделать вход, а затем обеспечить, чтобы ваши последовательности токенов приводили к правильным формам. В этом случае сложнее, чем использование простого fscanf().

  • 0
    спасибо, нет, я не хочу разбирать его сам, я проверю, какие библиотеки доступны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню