2010-04-05 3 views
2
XmlSerializer serializer = new XmlSerializer(typeof(IxComment)); 
System.IO.StringWriter aStream = new System.IO.StringWriter(); 
serializer.Serialize(aStream,Comments); 
commentsString = aStream.ToString(); 

Здесь commentsString имеет следующий элемент в немInterchange XSD и XSI на выходе XmlSerializer

<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" > 

Будет ли это причиной любой другой проблемы?

EDIT: Зачем мне это нужно?

Мы миграция существующего приложения от 1,1 до 3,0, и в коде есть, если цикл

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

Я не знаю, если и как, но я хотел бы спросить _why_? Вы создаете XML для потребителя, который не может обрабатывать XML (вместо этого вместо него используются строковые расщепления или - запрещать) - регулярные выражения? –

ответ

2

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


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

+0

Будет ли O/P XmlSerializer отличаться версиями? Поскольку я заметил, что текущий элемент IxComment отличается от уже существующего в БД –

+1

+1 - Мой комментарий выше уже предполагал, что это так. OP: Исправьте предположение. XML-атрибуты неупорядочены. Если ваш старый код зависит от определенного порядка, это просто неправильно. Попробуйте исправить реальную проблему, не создавая обходной путь. –

+0

Исключение - это, конечно, контроль над версиями, который распознает каждый xml-файл в моем репо, изменив момент, когда я переключаю машины :) Пришел к ответу, ища ответ на этот вопрос. – sTodorov