Поменяйте местами xsd и xsi на выходе XmlSerializer - PullRequest
2 голосов
/ 05 апреля 2010
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 Ответ

1 голос
/ 05 апреля 2010

Я надеюсь, что нет способа повлиять на порядок вещей, которые не должны иметь значения для любого куска кода, который понимает XML. Любой фрагмент кода, имеющий проблемы с порядком объявлений пространства имен, сильно поврежден и должен быть исправлен, точка.


После просмотра ваших правок я стал еще более непреклонен: исправьте ваш неработающий код. Ваш код никогда не должен был выполнять обработку строк в XML. Вы должны просто исправить свой код и не пытаться исправить стандарт XML, который диктует, что порядок объявлений пространства имен не имеет значения.

...