XML 序列化 + 命名空间 (C#)

本文关键字:命名空间 序列化 XML | 更新日期: 2023-09-27 18:37:08

我需要生成这样的东西:

<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd">
<Header>
...
</Header>
</AmazonEnvelope>

我正在尝试这样的事情,但它并不完全正确:

XmlSerializerNamespaces nms = new XmlSerializerNamespaces();
        nms.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        nms.Add("noNamespaceSchemaLocation", "amzn-envelope.xsd");

        XmlSerializer serializer = new XmlSerializer(typeof(XMLAmazonEnvelope));
        StreamWriter writer = new StreamWriter(path);
        serializer.Serialize(writer, objectToSave,nms);
        writer.Close();

结果是:

<?xml version="1.0" encoding="utf-8"?>
<xsi:AmazonEnvelope xmlns:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsi:Header>
...
</xsi:Header>
</xsi:AmazonEnvelope>

这不是我想要的。任何想法,应该采取哪些不同的做法?

XML 序列化 + 命名空间 (C#)

这里已经解决了问题:

如何添加 xml 命名空间 (Amazon Envelope)