Это может быть очень тривиальная проблема, которую я пытаюсь решить, но я уверен, что есть лучший способ сделать это. Поэтому, пожалуйста, будьте осторожны со мной.
У меня есть куча XSD-файлов, которые являются внутренними для нашего приложения, у нас есть около 20-30 XML-файлов, которые реализуют наборы данных на основе этих XSD. Некоторые XML-файлы имеют небольшой размер (<100 КБ), другие занимают около 3-4 МБ, а некоторые - более 10 МБ. </p>
Мне нужно найти способ выяснить, каково пространство имен этих Xml-файлов, чтобы обеспечить (что-то вроде) intellisense на основе XSD. Реализация этого не проблема - другой разработчик написал код для этого.
Но я не уверен, что лучший (и самый быстрый!) Способ определения пространства имен - без использования XmlDocument (который выполняет полный анализ).
Я использую C # 3.5, и документы поступают в виде потока (некоторые из них являются удаленными файлами). Все файлы * .xml (я могу определить, было ли это основано на расширении), но, к сожалению, пространство имен Xml - единственный способ.
Сейчас я попробовал XmlDocument, но обнаружил, что он неэффективен и медленен, так как большие документы ожидают анализа (даже документы размером 100 КБ).
public string GetNamespaceForDocument(Stream document);
Что-то похожее на вышесказанное - подпись моего метода - перегрузки включают строку для «содержимого». Будет ли шаблон RegEx (скомпилированный) хорошим?
Как Visual Studio справляется с этим так эффективно? Другой колледж сказал мне, чтобы я нашел быстрый синтаксический анализатор Xml в C / C ++, проанализировал содержимое и получил заглушку, которая возвращает пространство имен как более медленное в .NET, это хорошая идея?