Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 проверить программно это xml или нет  [new]
NewIvanovec
Member

Откуда: Иваново
Сообщений: 566
подскажите пжл, как проверить в переменной string содержится xml или нет
c#
29 авг 18, 16:12    [21657853]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20527
XDocument.Load

если ошибки не будет, значит xml
29 авг 18, 16:20    [21657862]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3432
по уму если делать, то нужно сделать XML схему, потом валидировать содержимое по заданной схеме. Тогда точно будете уверены в том, что это XML и эта XML'ка соответствует тому, что вы определили.
29 авг 18, 17:55    [21657988]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5093
Roman Mejtes
по уму если делать, то нужно сделать XML схему, потом валидировать содержимое по заданной схеме. Тогда точно будете уверены в том, что это XML и эта XML'ка соответствует тому, что вы определили.

Зачем? Про валидность XML в начальной постановке не было ни слова (и, я так сильно подозреваю, ТС не особенно в курсе, что это). А для проверки на well-formed достаточно попытки загрузки XML в XDocument/XmlDocument. Ну, или попытки прогнать строку через XmlReader.
30 авг 18, 03:28    [21658309]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
hVostt
Member

Откуда:
Сообщений: 15817
NewIvanovec
подскажите пжл, как проверить в переменной string содержится xml или нет
c#


public static bool IsXml(string s)
{
   s = s?.Trim();
   if(!string.IsNullOrEmpty(s) && s.Length >= 4 && s.StartsWith("<") && s.EndsWith(">");
}


30 авг 18, 06:58    [21658329]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
hVostt
Member

Откуда:
Сообщений: 15817
Упс, так правильно

public static bool IsXml(string s)
{
   s = s?.Trim();
   return !string.IsNullOrEmpty(s) && s.Length >= 4 && s.StartsWith("<") && s.EndsWith(">");
}


Зачётный супер 100% гарантированный что в строке XML.
30 авг 18, 06:59    [21658330]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20527
hVostt,

Сегодня ж вроде не начало апреля...
30 авг 18, 07:01    [21658331]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
hVostt
Member

Откуда:
Сообщений: 15817
Shocker.Pro,

Ну а чё :)
30 авг 18, 07:02    [21658332]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20527
ну тогда не IsXml, а IsLooksLikeTag
30 авг 18, 07:12    [21658334]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
hVostt
Member

Откуда:
Сообщений: 15817
Shocker.Pro,

Тут надо понимать цели задачи. Обычно, в подавляющем числе случаев, не-XML текст не начинается на < и не заканчивается на >. Этого достаточно, чтобы очень быстро определить, что в строке XML. Потому что и с обратной стороны, это может быть текст, по структуре считываться XML-парсером, но на самом деле это не XML, просто так получилось.
30 авг 18, 07:54    [21658352]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4782
NewIvanovec
подскажите пжл, как проверить в переменной string содержится xml или нет
c#

Обойти его antlr и убедиться, что нет ошибок.
30 авг 18, 12:14    [21658671]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145645
hVostt
Shocker.Pro,

Ну а чё :)

Нет проверки на закрытие тега
31 авг 18, 22:48    [21660891]     Ответить | Цитировать Сообщить модератору
 Re: проверить программно это xml или нет  [new]
hVostt
Member

Откуда:
Сообщений: 15817
Cat2
Нет проверки на закрытие тега


Так и на открытие нет. Нет проверки на допустимые символы. Нет проверки на атрибуты, и т.д. и т.п. Это всё занимает время. И вообще, у задачи не озвучены цели и контекст. Что приводит нас к решению, либо прикати пушку и лупи по воробьям, либо возьми веточку и потыкай на предмет живое оно или нет.
2 сен 18, 01:42    [21661532]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить