2017-02-15 4 views
0

Ich habe eine XML-Zeichenfolge, während de serialisieren dieses XML habe ich einen Fehler wie 'Es gibt einen Fehler in XML-Dokument (498, 31)' .Wie bekomme ich die XML-Knoten an dieser Position in C#, so dass ich es an den Benutzer senden kann, dass ein Problem in diesem bestimmten Knoten ist.Wie bekomme ich einen XML-Knoten an einer gegebenen Zeilennummer

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 
    } 
} 

Hier in Fang bekam ich die Nachricht wie ‚Es ist ein Fehler in XML-Dokument (498, 31).‘ Ich mag den Benutzer eine benutzerdefinierte Fehlermeldung werfen, dass ‚in diesem speziellen‚Knoten‘ Es gibt ein Problem ' Jede Hilfe oder Ideen zu diesem Thema würde sehr geschätzt werden.

+6

Ich benutze Notepad ++ für diese, aber ich denke, das ist nicht das, was Sie fragen :) – slawekwin

+0

Es wäre sehr hilfreich, wenn Sie den entsprechenden Code zeigen und möglicherweise einen Teil der XML-Datei sowie die genauen Fehler Nachricht –

+2

Es darf * kein * xml-Knoten an dieser Position sein. Das ist das Problem. Es läuft auf etwas, das kein gültiges XML ist. –

Antwort

4

Sie können keine XML-Funktionen verwenden (da die Datei kein gültiges XML ist), lesen Sie sie als Text und senden Sie dem Benutzer die problematische Zeile.

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

Vielleicht auch einige umgebende Linien, z.B. 497-5 bis 497 + 5, um genügend Kontext zu haben. –

+0

enthält die Ausnahme die Zeilennummer explizit oder müssen Sie sie aus dem Text analysieren? Wenn ja, wie machst du das bei verschiedenen Sprachen? – slawekwin

+0

@Anuja Haben Sie eine zusätzliche Anforderung, die Datei von einem Webserver zu lesen? Wenn ja, frage das als separate Frage. Auf dieser Seite sollten Sie jede Frage als eine minimale, spezifische Frage stellen. – Zesty

Verwandte Themen