2015-07-09 2 views
0

У меня есть данные XML, которые находятся в следующем формате. Мое приложение должно читать это с помощью XMLReader и выполнять некоторую обработку. Однако для этого мне нужно удалить или заменить первую часть каждой строки, в частности, <���.Как удалить символы не-ascii из данных XML

<���<XML>....data....</XML> 
<���<XML>....data....</XML 
<���<XML>....data....</XML>  
and so on... 

Я пробовал следующее, посмотрев на некоторые сообщения в формате SO, но пока ничего не добился. Любая помощь будет оценена!

private static Regex _invalidXMLChars = new Regex(
@"(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F\uFEFF\uFFFE\uFFFF]", 
RegexOptions.Compiled); 

     static string ReplaceHexadecimalSymbols(string txt) 
     { 
      return _invalidXMLChars.Replace(txt, string.Empty); 
     } 

Примечание: Я взял мои данные XML, который находится в формате .txt и пытался вызвать функцию в каждой строке, но это не сработало .. персонажи были все еще там после вызова функции.

+1

Что вы получаете, когда читаете файл с кодировкой UTF8? Похоже на [проблема XY] (http://www.perlmonks.org/?node=XY+Problem) – EZI

+0

То же самое, символы все еще там @EZI –

+0

Если вы читаете байты файла, какие байты вы видите на позиции этих персонажей? – cubrr

ответ

0

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

В любом случае, когда вы читаете строку, просто оставьте все символы до <XML>.

+0

Некоторые строки также могут быть в этом формате '.... data ....< ...' –

+0

Итак, некоторые «xml's сломаны символами новой строки? Вы должны определенно выяснить, что вызвало это. – zmbq

 Смежные вопросы

  • Нет связанных вопросов^_^