2017-02-15 21 views
0

У меня есть строка xml. При сериализации этого xml я получил ошибку, например: «В документе XML (498, 31) есть ошибка». Как я могу получить xml в этой позиции в C#, чтобы я мог отправить его пользователю, что есть проблема в этом конкретном узле.Как получить узел XML по заданному номеру строки

using (TextReader reader = new StringReader(xml)) 
{ 
    try 
    { 
     tempClass = (T)new XmlSerializer(typeof(T)).Deserialize(reader); 
    } 
    catch (InvalidOperationException ex) 
    { 
     //Here we need to show the node in which the error occurred 
    } 
} 

Здесь в улове я получил сообщение, как "Существует ошибка в документе XML (498, 31). Я хочу, чтобы бросить сообщение об ошибке пользователю, что«в данном „узел“ есть проблема ' Любая помощь или идеи по этому вопросу будет принята с благодарностью.

+6

Я использую Notepad ++ для этого, но я предполагаю, что это не то, что ты просишь :) – slawekwin

+0

Было бы очень полезно, если вы могли бы показать соответствующий код и, возможно, часть файла XML, а также точную ошибку message –

+2

В этой позиции не может быть * be * «xml». Это проблема. Он запускается во что-то недопустимое xml. –

ответ

4

Вы не можете использовать функции XML (так как файл недопустим XML), поэтому прочитайте его как текст и отправьте пользователю строку нарушения.

string[] xmlLines = File.ReadAllLines(path);  
int linesFrom = 5; 
int exceptionLine = 10; //Your line number 
int startLine = exceptionLine - linesFrom - 1 > 0 ? exceptionLine - linesFrom - 1: 0; 
int endLine = exceptionLine + linesFrom - 1 > xmlLines.Count - 1 ? exceptionLine + linesFrom - 1: xmlLines.Count - 1; 
StringBuilder sb = new StringBuilder(); 
for (int i = startLine ; i < endLine ; i++) 
{ 
    sb.Append(xmlLines[i]); 
} 
return sb.ToString(); 
+2

Возможно, также включают некоторые окружающие линии, например. 497-5 до 497 + 5, чтобы иметь достаточно контекста. –

+0

Исключением является номер строки явно или вам нужно проанализировать его из текста? если да, то как вы это делаете в случае разных языков? – slawekwin

+0

@Anuja У вас есть дополнительное требование для чтения файла с веб-сервера? Если да, спросите это как отдельный вопрос. На этом сайте вы должны задать каждый вопрос как минимальный, конкретный вопрос. – Zesty