Емкость построителя строк

Я пытаюсь использовать средство записи XML для создания строки xml в построителе строк.

Это работает, но возвращаемая строка обрезается до 6134 символов.

Из того, что я прочитал, проблема связана с построителем строк, а не с писателем xml.

Я пытался увеличить его емкость вручную, но это, похоже, не имеет никакого эффекта.

Вот пример кода

StringBuilder xmlout = new StringBuilder(50000000);

using (XmlWriter w = XmlWriter.Create(xmlout))
    {
        w.WriteStartDocument();
        w.WriteStartElement("order");
        w.WriteAttributeString("Name", "Value");

        // more elements and attributes...

        w.WriteEndElement(); //order
        w.WriteEndDocument();
    }

String xml = xmlout.ToString();

Я поставил очень большую емкость просто в качестве теста.

Любая помощь приветствуется


person Danny Seager    schedule 07.06.2013    source источник
comment
Вы пробовали Flush() со своим писателем?   -  person zmbq    schedule 07.06.2013
comment
@zmbq Он внутри using, поэтому промывка не требуется.   -  person Matthew Watson    schedule 07.06.2013
comment
Я так и предполагал, но хотел убедиться...   -  person zmbq    schedule 07.06.2013
comment
@DannySeager StringBuilder может иметь огромную емкость, так что проблема не в этом. Кроме того, вам не нужно устанавливать начальную емкость 50000000. Исключения не случаются и не скрываются?   -  person Matthew Watson    schedule 07.06.2013
comment
Я только что проверил ваш код и без проблем создал строку размером 2 МБ. Установка начальной емкости StringBuilder поможет только в том случае, если у вас есть проблемы с выделением дополнительной памяти при создании строки. Выделение нескольких килобайт обычно не проблема. Итак, проблема, похоже, заключается в том, как вы используете строку после ее создания. Как определить, что строка обрезана?   -  person Guffa    schedule 07.06.2013
comment
@zmbq, я добавил несколько ручных сбросов xmlwriter(), и возвращенная строка была больше (9177), но это еще не весь результат.   -  person Danny Seager    schedule 07.06.2013
comment
@Guffa Я определяю, что строка обрезана, ставя точку останова, проходя код, а затем наводя курсор на строку xml после присвоения значения и (щелкая увеличительное стекло) просматривая строку.   -  person Danny Seager    schedule 07.06.2013
comment
@garvit gupta Итак, в основном то, что говорит другая ветка, заключается в том, что емкость должна управлять собой, вот как я полагал, что это должно работать.   -  person Danny Seager    schedule 07.06.2013
comment
@DannySeager: Какую версию Visual Studio вы используете? Когда я пытаюсь это сделать в VS 2010, я вижу всю строку, но более ранние версии могут отображать только часть строки.   -  person Guffa    schedule 07.06.2013
comment
@Guffa Visual Studio 2012, платформа версии 4.5   -  person Danny Seager    schedule 07.06.2013
comment
@DannySager: я не могу повторить это, когда проверяю. Можете ли вы опубликовать пример кода, который показывает проблему?   -  person Guffa    schedule 07.06.2013