Как разобрать значение из тега XML на языке Си? - PullRequest
0 голосов
/ 04 октября 2009

Я получаю эту строку в качестве ввода "<operator value=1/>". Как в C я могу разобрать эту строку, чтобы получить «1» обратно?

Ответы [ 2 ]

2 голосов
/ 04 октября 2009

Если вы знаете, что именно такой тип строки вы всегда получите, вы можете просто использовать sscanf():

int value;
if(sscanf(theString, "<operator value=%d/>", &value) == 1)
    ;  // parsing succeeded, use value
else
    ;  // parsing failed

Если вы собираетесь получать более сложные входные данные, я рекомендую использовать библиотеку синтаксического анализа XML, такую ​​как expat или TinyXML (требуется C ++).

0 голосов
/ 04 октября 2009

Я предполагаю, что вы анализируете строку без использования какой-либо библиотеки, и строка может быть недопустимой. Однажды я столкнулся с этой проблемой при разборе sgml.

Есть несколько способов сделать это. Вы можете использовать strstok, чтобы разделить строку, чтобы найти значение 1, а затем преобразовать его, используя atoi.

Я бы порекомендовал вам использовать библиотеку регулярных выражений для извлечения строки. Это будет обрабатывать больше граничных случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...