2017-07-28 3 views
0

J'essaie de renvoyer une chaîne XML en tant que CLOB de la procédure stockée Oracle à la chaîne C#.XmlWriter rognage de ma chaîne

Ensuite, j'écris cette chaîne dans un fichier en utilisant la classe XmlWriter.

Mon code ressemble à ce qui suit:

string myString= ((Oracle.ManagedDataAccess.Types.OracleClob)(cmd.Parameters["paramName"].Value)).Value.ToString(); 
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss"); 
var stream = new MemoryStream(); 
var writer = XmlWriter.Create(stream); 
writer.WriteRaw(myString); 
stream.Position = 0; 
var fileStreamResult = File(stream, "application/octet-stream", "ABCD"+fileName+".xml"); 
return fileStreamResult; 

Quand j'ai vérifié ma sortie CLOB retourne complètement à myString.

Lorsque je vérifie mon résultat final, le fichier XML est rogné à la fin.

Ma chaîne sera énorme pour ex: Longueur de 3382563 et plus.

Existe-t-il un paramètre permettant à XmlWriter d'écrire la chaîne complète dans le fichier.

Merci d'avance.

+1

Pourquoi XmlWriter existe-t-il en premier lieu? Qu'attendez-vous qu'il fasse? –

Répondre

1

On dirait que tout ce que vous voulez faire est d'extraire de votre base de données une chaîne de caractères et d'écrire cette valeur dans un fichier texte. La chaîne étant xml ne vous oblige pas à utiliser une classe ou une méthode XML spécifique à moins que vous ne souhaitiez effectuer des opérations spécifiques au XML, ce que je ne vois pas dans votre extrait de code. Par conséquent, je vous suggère de saisir simplement la valeur de la chaîne et de la cracher dans un fichier de la manière la plus simple.

string myString = " blah blah blah keep my spaces "; 

using (StreamWriter sw = new StreamWriter(@"M:\StackOverflowQuestionsAndAnswers\XMLWriterTrimmingString_45380476\bin\Debug\outputfile.xml")) 
{ 
    sw.Write(myString); 
}