c# - 防止 XmlSerializer 格式化输出

标签 c# xml formatting xml-serialization

当使用 XmlSerializer 的默认设置时,它会将 XML 输出为格式化值。

IE:类似的东西。

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfStock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Stock>
    <ProductCode>12345</ProductCode>
    <ProductPrice>10.32</ProductPrice>
  </Stock>
  <Stock>
    <ProductCode>45632</ProductCode>
    <ProductPrice>5.43</ProductPrice>
  </Stock>
</ArrayOfStock>

如何防止输出中出现任何类型的格式化?所以我想要实现的就是这个。

<?xml version="1.0" encoding="utf-8"?><ArrayOfStock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Stock><ProductCode>123456</ProductCode><ProductPrice>10.57</ProductPrice></Stock><Stock><ProductCode>789123</ProductCode><ProductPrice>133.22</ProductPrice></Stock></ArrayOfStock>

编辑:我的方法的完整代码是

public static String Serialize(Stock stock)
{
     XmlSerializer serializer = new XmlSerializer(typeof(Stock));

     using (StringWriter stringWriter = new StringWriter())
     {
         serializer.Serialize(stringWriter, stock);
         return stringWriter.ToString();
     }            
}

最佳答案

不是很直观,但是 XmlWriterSettings 上的 Indent 属性控制着整个格式:

var serializer = new XmlSerializer(typeof(MyClass));

using (var writer = new StreamWriter("file.path"))
using (var xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings { Indent = false }))
{
    serializer.Serialize(xmlWriter, myObject);
}

XmlWriterSettings 上有更多选项您可能想要探索。

关于c# - 防止 XmlSerializer 格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414617/

相关文章:

c# - 如何从 Excel 调用 C# 库?

c# - 缩放窗口窗体窗口

javascript - 为什么我的 JavaScript XML 处理代码在 Safari 中不起作用?

vim - 在 Vim 中使用 AStyle

tabs - Intellij 仅在复制期间将制表符转换为空格

C# WPF 如何更改 RenderTransformOrigin 但保持位置?

c# - 异质委托(delegate)名单

javascript - XSLT 在 IF 语句后添加书价

xml - Nokogiri 的 clojure 等价物是什么(用于使用 xpath 和 css 选择器解析 xml)

c - 不同scanf格式的区别