У меня есть тысячи документов SGML, некоторые из которых хорошо сформированы, некоторые не так хорошо сформированы.Мне нужно получить некоторые элементы в документах, но каждый раз, когда я загружаюсь и пытаюсь прочитать их в XDocument, XMLDocument или даже просто в StreamReader, я получаю разные ошибки XMLException.
Такие вещи, как "'[' - неожиданный токен."Зачем?Потому что у меня есть документ с DOCTYPE, например
<!DOCTYPE RChapter PUBLIC "-//LSC//DTD R Chapter for Authoring//EN" [] >
, и я узнал, что в «[]» должно быть что-то допустимое внутри.Опять же, я не контролирую создание документов, но я ДОЛЖЕН «взломать» их и получить нужные мне данные.Другой пример - наличие «незамкнутого» ЭЛЕМЕНТА, например:
<Caption>Plants, and facilities<hardhyphen><hyphen>Inspection.</Caption>
Это исключение XMLEx: «Начальный тег« дефис »в строке 27 не соответствует конечному тегу« Заголовок ». Строка 27, позиция58.»Очевидно, верно?
Но тогда возникает вопрос, как на самом деле вы можете получить некоторые элементы в этих документах, не встречая исключений XMLE?Является ли SAX-парсер правильным способом?Я в основном хочу открыть документ, перейти прямо к нужному элементу (не беспокоясь о том, что может быть, а может и не быть правильно сформированным рядом), вытащить данные и двигаться дальше.Должен ли я просто забыть синтаксический анализ с XMLDocument, XDocument и просто выполнить простые замены строк, такие как
str.Replace("<hardhypen><hyphen>", "-")
, а затем попытаться загрузить его в один из синтаксических анализаторов XML.Любые советы по стратегиям?