使用具有相同uri但前缀不同的多个命名空间在C#中序列化xml

时间:2019-06-11 20:20:44

标签: c# xml serialization namespaces

我需要将xml文件提交给我没有任何控制权的服务,因此必须完全按照指定的格式进行格式化,否则将被拒绝,我遇到的特殊格式化问题是向其中添加多个名称空间URI相同但前缀不同的文件,最终结果必须看起来像这样:

<RootElement xmlns="http://www.example.com/example"  
             xmlns:prefix="http://www.example.com/example">

否则它将被自动拒绝。

我尝试将XmlSerializerNamespaces类与XmlSerializer一起使用,以添加两个命名空间,如下所示:

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty,"http://www.example.com/example");
ns.Add("prefix", "http://www.example.com/example");

但是只要URI相同,就只添加一个,如果我更改第二个URI,则两个元素都添加。

编辑:对于希望将来解决此问题或类似问题的任何人,制作这些格式非常特殊的xml文件的简单方法是使用XMLDocument类而不是XDocument类。 XDocument将尝试修复您的格式,但如果Web服务需要XMLDocument,它将使您“做错”事情。

0 个答案:

没有答案