Лучший способ обнаружить XML? - PullRequest
21 голосов
/ 21 мая 2009

В настоящее время у меня есть следующий код c # для извлечения значения из текста. Если это XML, я хочу получить значение внутри него, иначе, если это не XML, он может просто вернуть сам текст.

String data = "..."
try
{
    return XElement.Parse(data).Value;
}
catch (System.Xml.XmlException)
{
    return data;
}

Я знаю, что исключения в C # дороги, поэтому мне было интересно, есть ли лучший способ определить, является ли текст, с которым я имею дело, xml или нет?

Я думал о тестировании на регулярные выражения, но я не вижу в этом более дешевой альтернативы. Обратите внимание, я прошу менее дорогой способ сделать это.

Ответы [ 13 ]

0 голосов
/ 21 мая 2009

Если вы хотите узнать, является ли он действительным, почему бы не использовать встроенный объект .NetFX, а не написать его с нуля?

Надеюсь, это поможет,

Bill

0 голосов
/ 21 мая 2009

Способ, который вы предлагаете, будет дорогостоящим, если вы будете использовать его в цикле, в котором большинство xml не проверено. В случае валидного xml ваш код будет работать так, как будто нет обработки исключений ... так что если в большинстве если ваш xml проверен или вы не используете его в цикле, ваш код будет работать нормально

0 голосов
/ 21 мая 2009

Подсказка - все действительные xml должны начинаться с "<?xml "

Возможно, вам придется иметь дело с различиями в наборе символов, но проверка простого ASCII, utf-8 и unicode покроет 99,5% xml там.

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