XmlWriter 修剪我的字符串

问题描述 投票:0回答:2

我正在尝试将 XML 字符串作为 CLOB 从 Oracle 存储过程返回到 C# 字符串。

然后我使用 XmlWriter 类将此字符串写入文件。

我的代码如下所示:

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;

当我检查 CLOB 输出时,它完全返回到 myString。

当我检查最终结果时,XML 文件在末尾被修剪。

我的字符串将会很大,例如:长度为 3382563 甚至更多。

XmlWriter 是否有任何设置可以将完整的字符串写入文件。

提前致谢。

c# string filestream memorystream xmlwriter
2个回答
1
投票

听起来您想要做的就是从数据库中获取一些字符串值,并将该字符串值写入文本文件中。字符串 xml 实际上并不强制您使用 XML 特定的类或方法,除非您想要执行 XML 特定的操作,而我在您的代码片段中没有看到这些操作。因此,我建议您简单地获取字符串值并以最简单的方式将其吐出到文件中。

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

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

0
投票

遇到同样的问题。我猜 XmlWriter 没有时间将其所有内容刷新到流中。所以你应该手动调用

xmlWriter.Flush();
xmlWriter.Close();

然后问题就消失了。

© www.soinside.com 2019 - 2024. All rights reserved.