Ich benutze folgende XML-Ausgabe für das Schreiben von XML-Dateien auf der Grundlage von CSV-Daten.XML-Ausgabegerät fügt zusätzliches nicht-ASCII-Zeichen hinzu
public override void Output(IRow input, IUnstructuredWriter output)
{
IColumn badColumn = input.Schema.FirstOrDefault(col => col.Type != typeof(string));
if (badColumn != null)
{
throw new ArgumentException(string.Format("Column '{0}' must be of type 'string', not '{1}'", badColumn.Name, badColumn.Type.Name));
}
using (var writer = XmlWriter.Create(output.BaseStream, this.fragmentSettings))
{
writer.WriteStartElement(this.rowPath);
foreach (IColumn col in input.Schema)
{
var value = input.Get<string>(col.Name);
if (value != null)
{
// Skip null values in order to distinguish them from empty strings
writer.WriteElementString(this.columnPaths[col.Name] ?? col.Name, value);
}
}
}
}
Es funktioniert wirklich gut und Jobs beendet vollständig ohne Fehler jedoch auf Vorschau und Download der Datei gibt es ein weiteres zusätzliches Zeichen, die in Ausfall dieser XML-Datei verursacht gelesen werden. Ich habe versucht, mit Fragment-Ebene und Auto als Konformität Ebenen.
Meine Beispielausgabe erhalten wird,
und das zusätzliche Zeichen zwischen den 2-Tags verursacht Problem beim Lesen der Datei.
Haben Sie den Wert während des Schreibens (in Ihrer letzten Codezeile) gesehen, um auszuschließen, dass die Daten dieses Zeichen haben? Ich vermute auch, dass die Kodierung in Ihrem Prozess geändert wurde, aber Sie würden das normalerweise am Anfang oder für bestimmte Zeichen sehen. – montewhizdoh
Da ich den Job mit ADLA ausführe, ist es möglicherweise nicht möglich, einen Blick auf Zeichenvergleiche zu werfen. Kennst du irgendeine Methode, mit der ich mehr Details über Fehler erfahren kann? PS. sehr neu in Azure Data Lake –
Sie können nicht einen Haltepunkt auf der letzten Zeile des Codes setzen? Vielleicht brauchst du so etwas? https://blogs.msdn.microsoft.com/webdev/2013/11/04/remote-debugging-a-window-azure-web-site-with-visual-studio-2013/ – montewhizdoh