在XmlSerializer的输出中交换xsd和xsi

时间:2010-04-05 10:36:43

标签: c# xsd xmlserializer xsi

XmlSerializer serializer = new XmlSerializer(typeof(IxComment));
System.IO.StringWriter aStream = new System.IO.StringWriter();
serializer.Serialize(aStream,Comments);
commentsString = aStream.ToString();

这里commentsString中包含以下元素

<IxComment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

是否有可能交换xsi和xsd属性并获取如下所示的元素

<IxComment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

这会导致其他问题吗?

编辑:为什么我需要这样做?

我们正在将现有应用程序从1.1迁移到3.0,并且在代码中有一个if循环

int iStartTagIndex = strXMLString.IndexOf("<IxComment xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");

检查IxComment的索引。 这里序列化器的o / p和条件在xsd和xsi的位置上不同。所以我想知道我们是否可以指示序列化器根据需要提供o / p。

我在这里有另一个问题,因为这是一个现有的应用程序,序列化程序O / P与版本有什么不同?

1 个答案:

答案 0 :(得分:1)

我希望没有办法影响对任何理解XML的代码都无关紧要的事情的顺序。任何与命名空间声明顺序有问题的代码都会严重破坏,必须修复,句点。


看到你的编辑后,我更加坚定:修复你破坏的代码。您的代码永远不应该对XML执行字符串处理。您应该只修复代码而不是尝试修复XML标准,这标志着命名空间声明的顺序不相关。