我需要将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,它将使您“做错”事情。