【发布时间】:2018-02-28 14:14:26
【问题描述】:
我的 C# 应用程序具有将对象列表 (inputList) 作为参数的方法,它使用 TextWriter 和 XMLWriter 创建一个 XML 字符串,并使用下面的代码提交到 Web 服务。
using (TextWriter writer = new Utf8StringWriter())
{
using (XmlWriter xw = XmlWriter.Create(writer, settings))
{
xw.WriteStartElement("submission");
xw.WriteElementString("version", XMLversion);
xw.WriteElementString("user", USER_NAME);
foreach (var obj in inputList)
{
xw.WriteStartElement("node");
xw.WriteElementString("data1", obj.data1.ToString());
xw.WriteElementString("data2", obj.data2.ToString());
xw.WriteElementString("data3", obj.data3.ToString());
xw.WriteElementString("data4", obj.data4.ToString());
xw.WriteEndElement();
}
}
xmlFile = writer.ToString();
}
记录列表中每个项目的提交的要求之一。所以我想知道是否有更有效的方法在foreach 循环中创建 XML 节点的字符串?
之后我考虑过将 XMLReader 与字符串一起使用,但这是一个全新的过程,虽然我知道我可以手动创建它,并且很高兴这样做,但我愿意接受其他建议。本质上,我正在寻找一种有效的技术来生成如下所示的字符串:
<node>
<data1>obj.data1.ToString()</data1>
<data2>obj.data2.ToString()</data2>
<data3>obj.data3.ToString()</data3>
<data4>obj.data4.ToString()</data4>
</node>
【问题讨论】:
-
你试过简单地序列化对象吗?
-
我推荐使用 Linq-to-XML 来生成 XML 文档。 MSDN 链接是:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
-
不要试图使用 StringBuilder 以谷仓方式生成字符串,XmlWriter 会处理许多重要的事情,例如字节编码和将输入字符(如 '>' 转换为 '>'以便生成的流格式正确。
-
我喜欢序列化它的想法@DiskJunky,会尝试的。毕竟,数据在日志中存储为 blob,所以谁在乎呢?
-
谢谢@diberium 我不明白这将如何解决我的问题。
标签: c# xmlwriter textwriter