如何在 .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?。
我正在尝试将以下 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?。