Как сказать, является ли строка xml?

WPF позволяет Вам сделать некоторые удивительные вещи, и я ЛЮБЛЮ его..., но я всегда чувствую себя обязанным квалифицировать мои рекомендации, каждый раз, когда разработчики спрашивают меня, думаю ли я, что они должны перемещаться в новую технологию.

действительно ли Ваши разработчики желают (предпочтительно, НЕТЕРПЕЛИВЫ) провести время, которое требуется, чтобы учиться использовать WPF эффективно? Я никогда не думал бы для высказывания этого о MFC, или Windows Forms или даже неуправляемом DirectX, но Вы, вероятно, НЕ хотите команду, пытающуюся "взять" WPF в течение нормального dev. цикла для поставлющегося продукта!

Делают по крайней мере один или два из Ваших разработчиков имеют некоторую чувствительность дизайна и делают у людей с заключительными полномочиями дизайна есть достойное понимание вопросов развития, таким образом, можно усилить возможности WPF создать что-то, что на самом деле ЛУЧШЕ, вместо просто более "красочного", показывая бесплатную анимацию?

Делает некоторый процент Вашей целевой клиентской базы, работает на интегрированных наборах графического процессора, которые не могли бы поддерживать функции, которые Вы планировали - или они все еще выполняют Windows 2000, которые устранили бы их как клиентов в целом? Некоторые люди также спросили бы, заботятся ли Ваши клиенты на самом деле о расширенном зрительном ряде, но, пережив внутреннюю компанию "Наши корпоративные клиенты не заботятся о цветах и изображениях" о дебатах в начале 90-х, я знаю, что хорошо разработанные решения от Ваших конкурентов ЗАСТАВЯТ их заботиться, и реальный вопрос состоит в том, являются ли условия правильными, чтобы позволить Вам предложить что-то, что заставит их заботиться ТЕПЕРЬ.

проект включает наземную разработку, по крайней мере, для уровня представления, для предотвращения дополнительной сложности попытки сцепиться в несовместимые леса прежней версии (Interop с Формами Победы НЕ является бесшовным)?

Ваш менеджер может принять (или быть отвлечен от того, чтобы замечать), значительное ПОНИЖЕНИЕ производительности разработчика в течение четырех - шести месяцев?

Эта последняя проблема происходит из-за того, о чем мне нравится думать как природа "FizzBin" WPF с десятью различными способами реализовать любую задачу и никакую очевидную причину предпочесть, чтобы один подход к другому и мало руководства, доступного, помогли Вам сделать выбор. Не только будет недостатки любого выбора, который Вы делаете, становятся ясными только намного позже в проекте, но у Вас, как фактически гарантируют, будет каждый разработчик на Вашем проекте, принимающем другой подход, приводящий к сильной головной боли обслуживания. Самый печальный из всех несоответствия, которые постоянно сбивают Вас с толку, поскольку Вы пытаетесь изучить платформу.

можно найти больше всесторонней WPF-связанной информации в записи на моем блоге:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

13
задан si618 29 September 2009 в 04:59
поделиться

7 ответов

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

3
ответ дан 2 December 2019 в 00:18
поделиться

Если вы собираетесь в первую очередь принимать неверно сформированный XML, я думаю, что перехват исключения - лучший способ справиться с этим.

8
ответ дан 2 December 2019 в 00:18
поделиться

Если ваша цель - надежность, то лучшим вариантом является использование XmlDocument.LoadXml, чтобы определить, является ли это правильным XML или нет. Полный синтаксический анализ данных может быть дорогостоящим, но это единственный способ достоверно определить, является ли это правильным XML или нет. В противном случае любой символ, который вы не исследуете в буфере, может привести к тому, что данные будут недопустимыми XML.

2
ответ дан 2 December 2019 в 00:18
поделиться

Зависит от того, насколько точный тест вы хотите. Учитывая, что у вас уже нет официального

  <the quick brown fox jumped over the lazy dog's back>

как XML и удалить его? Если да, то ваша техника в порядке. Если нет, вы должны решить, насколько точен тест, и закодировать распознаватель с такой степенью надежности.

1
ответ дан 2 December 2019 в 00:18
поделиться

Как к вам поступают данные? Какие еще данные окружают его? Возможно, есть способ получше; возможно, вы можете токенизировать данные, которые вы контролируете, а затем сделать вывод, что все, что не находится в этих токенах, является XML, но нам нужно знать больше.

Если такое милое решение не удается, я думаю, что у вас все в порядке ( для проверки того, что он начинается и заканчивается этими символами).

Нам действительно нужно знать больше о формате данных.

1
ответ дан 2 December 2019 в 00:18
поделиться

Если XML не содержит корневого элемента (то есть это фрагмент XML, а не полный документ), то следующий образец также будет вполне допустимым, но не будет соответствовать вашему детектору:

foo<bar/>baz

Фактически, любая текстовая строка будет допустимым фрагментом XML (подумайте, если исходный документ XML был просто корневым элементом, обертывающим некоторый текст, и вы убираете теги корневого элемента)!

0
ответ дан 2 December 2019 в 00:18
поделиться
try
{
    XmlDocument myDoc = new XmlDocument();
    myDoc.LoadXml(myString);
}
catch(XmlException ex)
{
    //take care of the exception
}
0
ответ дан 2 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: