2009-07-24 2 views
1

Я в настоящее время сериализации объекта с помощью XmlSerializer, а полученный XML начинается с:Что определяет кодировку, используемую в Xml Serialization?

<?xml version="1.0" encoding="utf-16"?> 

который я хотел бы избавиться, потому что в данном конкретном случае я не нужен (я используйте только сериализованную строку для десериализации позже с моим собственным кодом, поэтому я могу повторно добавить его позже, когда это необходимо).

Я также стараюсь сделать это как можно быстрее, так как мы будем делать TONS этих сериализации.

Итак, вопрос в том, могу ли я рассчитывать на эту подпись, всегда быть точно такой же? (Как и в, можно ли просто удалить первые 39 символов результирующей строки, а затем добавить обратно ту же самую строку при десериализации?)

Или может быть что-то сделать, например, в кодировке?

Благодаря

+0

Вы провели анализ производительности, который говорит вам, что это ваше следующее узкое место в производительности? Мне кажется, что для вашего времени, скорее всего, будет более плодотворное использование. –

+0

Нет, это, вероятно, не является плодотворным использованием моего времени, с точки зрения производительности. Тем не менее, для одного я пытаюсь узнать, как/почему эта конкретная кодировка установлена ​​и как я могу ее переопределить. Кроме того, меня волнует формат вывода этого XML, и я хочу, чтобы у него не было подписи XML по причинам, отличным от производительности. –

ответ

2

Ответ на ваш вопрос в коде, который вы нам не показали, - как вы сделали сериализацию. Вероятно, вы сериализовались в StringWriter или напрямую в StringBuilder. Строками в .NET являются UTF-16. Если вы сериализуете строку, у вас нет выбора, кроме как получить кодировку UTF-16.

В других ситуациях кодировка определяется местом назначения. Если вы сериализуете какой-либо тип TextWriter, тогда будет использоваться кодировка TextWriter, если она не переопределена. Если вы выполните сериализацию в XmlWriter, то XmlWriterSettings определит используемую кодировку.

Я рекомендую вам оставить подпись в покое, если вы не являетесь экспертом в области XML. XML-интерфейсы .NET XML понимают правила XML. Если вы не понимаете их так же хорошо, я рекомендую вам оставить это эксперту.

+0

Спасибо. Это объясняет, что я хотел знать. Я оставлю их в покое :-) –

0

Нет, вы не можете предположить, что декларация XML всегда будет такой же, как существует множество различных кодировок, которые могли бы быть использованы (среди прочего).

Прежде чем использовать его, лучше не помещать XML-строку таким образом.

+0

Итак, что определяет, какая кодировка будет использоваться? Могу ли я заставить его каким-то образом? Я не нашел места, чтобы указать его. –

+0

Я не понимаю вопроса - когда вы используете кодировку? –

+0

Я не использую кодировку. Мой вопрос: XML выходит с XML-сигнатурой, которая говорит, что кодировка является utf-16. Почему выбрана именно эта кодировка? Является ли это жестко закодированным в рамках? Могу я его изменить? Это зависит от погоды или от версии ОС хоста? –

0

Где именно ваше ускорение скорости предположительно исходит из этой оптимизации? Вы уверены, что удаление и добавление 39 символов в строку будет быстрее, чем сериализация дополнительных 39 символов? (Могло бы сказать, что это не так.)

+0

О, нет, удаление 39 символов не является улучшением SPEED. Я хочу удалить их, чтобы получившаяся строка была меньше/чище, но она больше не будет делать ничего. Часть скорости приходит только от попытки сделать этот запуск медленнее, например, запустив регулярное выражение, чтобы удалить эту стартовую часть.Если я просто удалю первые «n» символы, я могу сделать это в том же StringBuilder, который у меня уже есть. По правде говоря, может не иметь никакого значения использовать регулярное выражение, возможно, я его не измерил. –

+0

Что я в основном хочу знать, это то, что определяет эту кодировку, чтобы я мог ее исправить и убедиться, что она не изменится. –

Смежные вопросы