如何在 .NET Core 中将 class 实例序列化为 XML?

How to serialize a class instance to XML in .NET Core?

我正在尝试将以下 class 的 class 实例序列化为 XML 字符串。

[Serializable]
[XmlRoot]
public class Orders
{
   [XmlElement("Order")]
   public Order order { get; set; }
}

序列化工作正常,但我想从 Orders 元素中删除两个默认属性。尽管我需要另一种编码 (ISO-8859-1),而且我必须向 Orders 元素添加其他属性。

我想通过在 Orders class 中添加 [XmlAttribute] 来解决后者,但结果相同。

<?xml version="1.0" encoding="utf-16"?>
<Orders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Order>
      ...
   <Order>
</Orders>

有谁知道我怎样才能做到这一点?我非常感谢任何形式的帮助,干杯! (:


我当前的根class,应该有一个根属性

public class AGTOSV
{
   private string _attribute = "Hello World";

   [XmlAttribute]
   public string xmlns
   {
       get { return _attribute; }

       set { _attribute = value; }
   }

   // ....

如果我没理解错的话,你只想导出纯文本 xml。

然后您需要如下设置 XmlWriterSettings 并告诉序列化程序使用空命名空间。

var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
var settings = new XmlWriterSettings()
{
    OmitXmlDeclaration = true,
};

using (var stream = new StringWriter())
using (var writer = XmlWriter.Create(stream, settings))
{
    var serializer = new XmlSerializer(orders.GetType());
    serializer.Serialize(writer, orders, emptyNamespaces);
    string xml = stream.ToString();
}

另见 How can I make the xmlserializer only serialize plain xml?