2
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 是否与版本不同?

4

1 回答 1

2

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


看到您的编辑后,我更加坚定:修复您损坏的代码。您的代码不应该对 XML 执行字符串处理。您应该简单地修复您的代码,而不是尝试修复 XML 标准,该标准规定命名空间声明的顺序无关紧要。

于 2010-04-05T11:09:16.320 回答